以下代码是在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上的锁(在相应的同步块)?
我错过了一些东西,但不太清楚它是什么。
你试过吗?这管用吗?我认为它不会造成成本死锁 –
附注:如果在这种情况下出现死锁,整个等待/通知机制将是一个完整而彻底的失败,完全没用。 – Dariusz
为什么是-1?这对我来说似乎是合法的:| –