Когда я вызываю метод wait () для объекта потока, ожидающий поток будет пробужден, когда синхронизированный поток завершит работу, почему поведение объекта потока отличается от обычного объекта, где wait ()?
Thread thread1 = new Thread(()-> {
System.out.println("thread 1 start");
try {
Thread.sleep(3000);
System.out.println("thread over");
} catch (InterruptedException e) {
e.printStackTrace();
}});
thread1.start();
synchronized (thread1) {
try {
thread1.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("main thread wake up");
Я ожидал, что основной поток не проснется через 3 с, но не.