This page (revision-1) was last changed on 03-Dec-2010 19:17 by Dieter Käppel

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
1 03-Dec-2010 19:17 1 KB Dieter Käppel

Page References

Incoming links Outgoing links
Java Concurrency ...nobody

Version management

Difference between version and

At line 1 added 52 lines
!Einfache Thread Synchronisierung
__Ablauf:__
1. Der erste Thread acquired erfolgreich einen Lock auf das Object wait.
2. Der zweite Thread wird gestartet.
__Variante A__ (Der zweite Thread läuft zuerst in den synchronized Block):
3. Der zweite Thread acquired einen Lock auf das Object wait und wartet.
4. Der erste Thread ruft die Methode wait auf dem Object wait auf.
5. Der zweite Thread bekommt den Lock auf das Object wait und läuft weiter.
6. Der zweite Thread ruft die Methode notify auf dem Object wait auf.
7. Der zweite Thread gibt den Lock auf das Object wait frei.
8. Der erste Thread bekommt den Lock auf das Object wait und läuft weiter.
__Variante B__ (Der erste Thread läuft zuerst in die Methode wait):
3. Der erste Thread ruft die Methode wait auf dem Object wait auf und wartet.
4. Der zweite Thread acquired einen Lock auf das Object wait.
5. Der zweite Thread ruft die Methode notify auf dem Object wait auf.
6. Der zweite Thread gibt den Lock auf das Object wait frei.
7. Der erste Thread bekommt den Lock auf das Object wait und läuft weiter.
{{{
public class Wait implements Runnable {
@Override
public void run() {
synchronized (this) {
notify();
}
}
public static void main(String[] args) throws InterruptedException {
Wait wait = new Wait();
Thread thread = new Thread(wait);
synchronized (wait) {
thread.start();
wait.wait();
}
}
}
}}}