我正在寻找线程的一些谜题,但我无法弄清楚为什么以下内容始终打印999999
:
class Job extends Thread {
private Integer number = 0;
public void run() {
for (int i = 1; i < 1000000; i++) {
number++;
}
}
public Integer getNumber() {
return number;
}
}
public class Test {
public static void main(String[] args)
throws InterruptedException {
Job thread = new Job();
thread.start();
synchronized (thread) {
thread.wait();
}
System.out.println(thread.getNumber());
}
}
同一个锁上没有notify
(并且虚假唤醒似乎被忽略了)。
如果线程完成,是否会发出通知或其他信号?
为什么main
打印结果而不是“卡住”等待?