为什么线程不等待 notify()
?线程启动然后进入等待池,但在那一刻之后它继续执行。
public class JavaApplication2 {
public static void main(String [] args) {
ThreadB b = new ThreadB();
synchronized(b) {
b.start();
try {
System.out.println("1");
b.wait();
} catch (InterruptedException e) {}
System.out.println("Total is: " + b.total);
}
}
}
class ThreadB extends Thread {
int total;
@Override
public void run() {
synchronized(this) {
total += 1;
//notify();
}
}
}
最佳答案
您正在同步线程对象本身,这是错误的用法。发生的事情是,垂死的执行线程总是在其 Thread
对象上调用 notify
:Thread.join
relies on this .因此,很明显为什么在有和没有你自己的 notify
的情况下你会得到相同的行为。
解决方案:使用单独的对象进行线程协调;这是标准做法。
关于java - 为什么线程不等待 notify()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14186828/