午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

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

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

瀏覽:233日期: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
相關文章:
主站蜘蛛池模板: 久久久精品久久久久 | 波多野结衣91 | 日韩一区二区中文字幕 | 九九热精品视频 | 国产免费一区二区三区四在线播放 | 在线资源站 | 国产精品黄色在线观看 | 综合久久一区 | 日韩在线播放视频 | 国产成人精品一区二区三区福利 | 一级性爱视频 | 久草视频免费在线 | 色妞综合 | 精品久久久久一区二区国产 | 欧美日韩免费在线视频 | 好看的中文字幕 | 四虎国产精品永久在线国在线 | 日韩一区二区三区视频 | 黄色一级大片在线免费看国产一 | 国产ts人妖调教重口男 | 欧美在线播放视频 | 操在线视频 | 深夜成人福利视频 | 欧美日韩一区二 | 黄色一级a毛片 | www.色日本 | 少妇高潮久久久 | 亚洲情热 | 国产一区二区三区三州 | 婷婷色六月 | 天堂a在线 | a国产在线 | 三级欧美韩日大片在线看 | 成人在线免费观看网站 | 黄色大片黄色大片 | 夜夜久久久| 欧美日韩在线一区二区 | 亚洲在线视频观看 | 国产乱人伦精品一区二区 | 国产精品久久久久久久久久久久久久久久 | 亚洲欧美另类一区 |