我需要有人在java中为我简化等待通知方法。 我现在看了大概200个网站但仍然不明白。
我正在开发一个程序,需要让一个线程等待,直到从另一个线程调用notify ...
for (auto i: 1..n) ...
答案 0 :(得分:1)
等待需要在第一个Runnable中发生,你需要访问一个Object实例来等待,所以t1 Thread实例将不起作用。在这段代码中,我创建了一个单独的锁对象。
public static void main(String[] args) {
final Object lock = new Object();
new Thread(new Runnable() {
@Override
public void run() {
synchronized(lock) {
try {
lock.wait();
System.out.println("lock released");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
System.out.println("before sleep");
try {
Thread.sleep(1000);
System.out.println("before notify");
synchronized(lock) {
lock.notify();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
使用线程通知可能非常难以测试。我建议使用基于消息的方法,如Akka。