public class Thread04 {
final Object object = new Object();
Runnable rb4 = new Runnable() {
public void run(){
synchronized (object){
System.out.println("T1 start!");
try {
object.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
object.notify();
System.out.println("T1 end!");
}
}
};
Runnable rb5 = new Runnable() {
public void run(){
synchronized (object){
System.out.println("T2 start!");
object.notify();
System.out.println("T2 end!");
}
}
};
public static void main(String[] args) {
Thread04 th = new Thread04();
new Thread(th.rb4).start();
new Thread(th.rb5).start();
}
}
2 回答

MM們
TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
rb5 的 object.notify(); 調(diào)用時(shí) rb4 還沒有進(jìn)入 wait 狀態(tài),因?yàn)檫€在等待鎖。線程 start 并不代表馬上會(huì)自行 run(),也就是說后 start() 的線程的 run() 很有可能先執(zhí)行。
添加回答
舉報(bào)
0/150
提交
取消