下面是我在本地机器上运行时成功完成执行的代码片段。
我不明白为什么这个线程没有进入无限等待状态?
public class Job extends Thread {
private int counter;
@Override
public void run() {
synchronized (this) {
for (int i = 0; i < 100000; i++) {
counter++;
}
this.notifyAll();
}
}
public static void main(String[] args) throws InterruptedException {
Job job = new Job();
job.start();
synchronized (job) {
job.wait();
}
System.out.println(job.counter);
}
}
是否有任何保证上述代码将始终在每种情况下完成执行?有人可以澄清吗?