Warum warten und benachrichtigen Funktion funktioniert nicht richtig auf der gleichen Klassensperre?Warum warten und benachrichtigen Funktion funktioniert nicht richtig auf der gleichen Klassensperre
Bitte überprüfen Sie unten Code für warten und benachrichtigen Funktionalität und ihre Ausgabe.
Ausgang:
Thread-1
Thread-2
Thread-2 after notify
Erwartetes Ergebnis:
Thread-1
Thread-2
Thread-2 after notify
Thread-1 after wait
Code:
public class WaitAndNotify1 {
public static void main(String[] args) {
Thread t1=new Thread(new Runnable(){
@Override
public void run(){
System.out.println("Thread-1");
try {
synchronized (this) {
wait();
System.out.println("Thread-1 after wait");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Thread t2=new Thread(new Runnable(){
@Override
public void run(){
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread-2");
synchronized (this) {
notify();
System.out.println("Thread-2 after notify");
}
}
});
t1.start();
t2.start();
}
}
Es würde wirklich helfen, wenn Sie Ihren Code richtig in Zukunft formatiert werden könnte. .. –