public class Thread_A {Output
public static void main(String[] args) {
Thread Thread_B = new Thread(new Runnable() {
@Override
public void run() {
synchronized (this) {
int i=0;
while(i< 100)
i++;
//freier Faden A
notify();
}
}
});
Thread_B.start();
synchronized(Thread_B) {
try {
System.out.println("Thread A ist blockiert - Warten auf Thread B"+
"zum Abschließen");
//den AThread_B.wait() in die Warteschleife setzen;
} catch (InterruptedException e) {
// TODO Automatisch generierter catch-Block
e.printStackTrace();
}
System.out.println("Thread B ist abgeschlossen - Thread A ist freigegeben");
}
}
}
Thread A bleibt hängen Warten auf den Abschluss von Thread B
Thread B ist beendet. Thread A ist freigegeben
public class Sleep {Output
public static void main(String[] args) {
ThreadA a = new ThreadA();
a.start();
ThreadB b = new ThreadB();
b.start();
}
statische Klasse ThreadA extends Thread{
@Override
public void run() {
try {
System.out.println("Thread A");
Schlaf(4000);
System.out.println("Thread A: Ich habe 4 Sekunden geschlafen");
} catch (InterruptedException e) {
// TODO Automatisch generierter catch-Block
e.printStackTrace();
}
}
}
statische Klasse ThreadB erweitert Thread{
@Override
public void run() {
System.out.println("Thread B");
int Summe = 0;
for(int i = 0 ; i < 50; i++)
Summe +=i;
System.out.println("Thread B: Ich bin fertig");
}
}
}
Thread AProzess A wurde vor Prozess B gestartet, aber B hat die Verarbeitung durchgeführt, während Prozess A schlief und beendete die erste
Thread B
Thread B: Ich habe fertig
Thread A: Ich habe 4 Sekunden geschlafen
Please disable your ad blocker and refresh the window to use this website.