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

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:145日期: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(); 調(diào)用時 rb4 還沒有進(jìn)入 wait 狀態(tài),因?yàn)檫€在等待鎖。線程 start 并不代表馬上會自行 run(),也就是說后 start() 的線程的 run() 很有可能先執(zhí)行。

回答2:

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

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 丰满少妇在线观看网站 | 国产一二| 四虎影视在线 | 成人免费视频视频 | 天堂资源在线 | 亚洲免费婷婷 | 成人a在线 | www.毛片.com | 国产激情小视频 | 国产成人一区二区 | 伊人2222 | 精品免费观看 | 亚洲一区二区在线播放 | 国产日韩欧美在线观看 | 一区二区三区成人 | 国产黄色精品 | 国产a视频 | 亚洲一级免费视频 | 亚洲激情五月 | 日韩欧美在线一区 | 欧美一区二区三区在线视频 | 三级av片| 午夜视频在线免费观看 | 免费黄色小说网站 | 加勒比一区二区三区 | 日本免费不卡视频 | 色网站在线观看 | 午夜激情视频在线观看 | 亚洲精品999 | 香蕉网在线| 一级黄色在线观看 | 在线观看的av网站 | a级片免费 | 中文字幕日韩高清 | 老司机午夜免费精品视频 | 99re国产| 老司机午夜免费精品视频 | 日本精品视频在线观看 | 一区二区视频在线播放 | 欧美在线亚洲 | 日韩第一区|