以下代码在 SCJP6 书中
class ThreadA {
public static void main(String [] args) {
ThreadB b = new ThreadB();
b.start();
synchronized(b) {
try {
System.out.println("Waiting for b to complete...");
b.wait();
} catch (InterruptedException e) {}
System.out.println("Total is: " + b.total);
}
}
}
class ThreadB extends Thread {
int total;
public void run() {
synchronized(this) {
for(int i=0;i<100;i++) {
total += i;
}
notify();
}
}
}
前面的代码不会导致死锁,因为线程 a 和 b 都在 b 上锁定(在各自的同步块中)?
我错过了一些东西,但不太确定它是什么。