亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

Java object wait notify notifyAll代碼解析

瀏覽:2日期:2022-08-21 08:06:00

測試代碼:

public static Object loc=new Object(); public static void main(String[] args) throws Exception{ Thread t1=new Thread(new Runnable() { @Override public void run() {try { java.text.SimpleDateFormat sdf=new SimpleDateFormat('HH:mm:ss SSS'); System.out.println('['+sdf.format(new Date())+'] t1___等待鎖...'); synchronized (loc) { System.out.println('['+sdf.format(new Date())+'] t1___獲得鎖 ...'); Thread.sleep(5000); System.out.println('['+sdf.format(new Date())+'] t1___loc..開始執行wait...'); loc.wait(); System.out.println('['+sdf.format(new Date())+'] t1___loc..執行wait后續...'); Thread.sleep(1000); } System.out.println('['+sdf.format(new Date())+'] t1___loc..離開鎖...');}catch (Exception e){ e.printStackTrace();} } }); Thread t3=new Thread(new Runnable() { @Override public void run() {try { java.text.SimpleDateFormat sdf=new SimpleDateFormat('HH:mm:ss SSS'); System.out.println('['+sdf.format(new Date())+'] t3___等待鎖...'); synchronized (loc) { System.out.println('['+sdf.format(new Date())+'] t3___進入鎖...'); Thread.sleep(5000); System.out.println('['+sdf.format(new Date())+'] t3___loc..開始 wait...'); loc.wait(); System.out.println('['+sdf.format(new Date())+'] t3___loc..執行 wait后續...'); Thread.sleep(1000); } System.out.println('['+sdf.format(new Date())+'] t3___離開鎖...');}catch (Exception e){ e.printStackTrace();} } }); Thread t2=new Thread(new Runnable() { @Override public void run() {try { java.text.SimpleDateFormat sdf=new SimpleDateFormat('HH:mm:ss SSS'); System.out.println('['+sdf.format(new Date())+'] t2___等待鎖...'); synchronized (loc) { System.out.println('['+sdf.format(new Date())+'] t2___獲得鎖...'); Thread.sleep(5000); System.out.println('['+sdf.format(new Date())+'] t2___loc..開始執行 notify...'); loc.notify(); System.out.println('['+sdf.format(new Date())+'] t2___loc..執行 notify后續...'); Thread.sleep(1000); } System.out.println('['+sdf.format(new Date())+'] t2___loc 離開鎖....');}catch (Exception e){ e.printStackTrace();} } }); t1.start(); t3.start(); Thread.sleep(500); t2.start(); System.out.println('t1___before join ....'); t1.join(); System.out.println('t2___before join ....'); t2.join(); System.out.println('t3____before join ....'); t3.join(); System.out.println('main exit....'); }

執行結果:

[16:55:59 384] t1___等待鎖...

[16:55:59 384] t1___獲得鎖 ...

[16:55:59 384] t3___等待鎖...t1___before join ....[16:55:59 836] t2___等待鎖...[16:56:04 392] t1___loc..開始執行wait...

[16:56:04 392] t2___獲得鎖...[16:56:09 392] t2___loc..開始執行 notify...[16:56:09 392] t2___loc..執行 notify后續...[16:56:10 392] t2___loc 離開鎖....

[16:56:10 392] t3___進入鎖...[16:56:15 392] t3___loc..開始 wait...[16:56:15 392] t1___loc..執行wait后續...[16:56:16 392] t1___loc..離開鎖...t2___before join ....t3____before join ....

總結:

1. 執行wait后‘’暫時‘ 釋放當前對象鎖給其他線程,當前線程處于等待狀態

2. syn塊中的wait收到notify通知后 喚醒cpu 繼續判斷鎖狀態

3. 執行notify且當前的對象鎖釋放后 wait等待的線程激活

4. notifyAll 是一次喚醒所有的wait

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 亚洲国产日韩欧美 | 亚洲第一黄色 | 尤物久久99热国产综合 | 欧美日韩高清不卡一区二区三区 | 国产在线一区精品对白麻豆 | 亚洲线精品一区二区三区 | 精品久久一 | 亚洲免费人成在线视频观看 | 福利小视频在线 | 国产亚洲精品美女久久久久 | 免费一级特黄欧美大片勹久久网 | 五月亭亭六月丁香 | 永久免费观看午夜视频在线 | 日本成片| 国产亚洲自拍一区 | 国内精自品线一区91 | 国产视频资源在线观看 | 国内自拍一二三四2021 | 九九九九在线精品免费视频 | 精品国产欧美一区二区最新 | 国内自拍亚洲 | 黄色仓库在线观看 | 国产精品免费综合一区视频 | 浪潮ar二三区 | 免费观看一级特黄三大片视频 | 免费人成观看在线网 | 91资源在线视频 | 亚洲欧美激情小说另类 | 国产精品大白天新婚身材 | 久草国产视频 | 国产成人精品999在线 | 亚洲国产精品自在现线让你爽 | 久久久久免费精品视频 | 国产剧情麻豆精品免费 | 日韩免费高清一级毛片久久 | 久久91精品久久91综合 | 亚洲色图视频在线观看 | 一级全黄男女免费大片 | 免费观看又色又爽又大高清网站 | 国模精品视频一区二区三区 | 亚洲一区二区三区免费在线观看 |