av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

java - wait(),notify(),notifyAll() T2 start! T2 end! T1 start! 為什么會阻塞

瀏覽:119日期:2024-01-08 10:53:47

問題描述

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(); } }

問題解答

回答1:

rb5 的 object.notify(); 調用時 rb4 還沒有進入 wait 狀態,因為還在等待鎖。線程 start 并不代表馬上會自行 run(),也就是說后 start() 的線程的 run() 很有可能先執行。

回答2:

rb4在運行獲得object的對象鎖,輸出T1 start!,然后調用wait(),該方法會讓rb4掛起,同時釋放鎖,阻塞。 這時候rb5獲得鎖,輸出T2 start!。然后調用object.notify();,雖然這里打算讓rb4運行,但是rb5的鎖并沒有釋放,所以rb4還是處于阻塞。 rb5還是繼續運行,輸出T2 end!。 rb5運行結束,釋放鎖, rb4運行輸出T1 end!。

標簽: java
相關文章:
主站蜘蛛池模板: 精品免费视频 | 欧美精品乱码久久久久久按摩 | 亚洲视频在线播放 | 手机看片1 | 亚洲国产精品一区二区第一页 | 嫩草黄色影院 | 免费黄色av | 黄色片在线观看网址 | 欧美一区视频在线 | 欧美日韩91 | www精品美女久久久tv | 免费欧美| 亚洲在线免费 | 黄色一级免费 | 99久久精品免费看国产四区 | 日韩一级黄色毛片 | 国产乱码精品一区二区三区av | 天天久久| 国产我和子的乱视频网站 | 亚洲人成人一区二区在线观看 | 亚洲网视频 | 免费一级片 | 欧美日韩精品在线免费观看 | 拍拍无遮挡人做人爱视频免费观看 | 欧美高清hd | 免费一区二区三区在线视频 | 国产美女在线观看 | 人人草人人干 | 亚洲美女天堂网 | 91热爆在线观看 | 成人夜晚看av | 亚洲国产一区二区三区 | 伊人久久综合影院 | 国产精品久久久久aaaa九色 | 夜夜爽99久久国产综合精品女不卡 | 日韩在线成人 | 久久精品国产亚洲 | 久久精品黄色 | 欧美精品一区二区三区在线 | wwwsihu| 国际精品鲁一鲁一区二区小说 |