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

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

Java object wait notify notifyAll代碼解析

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

測(cè)試代碼:

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..開(kāi)始執(zhí)行wait...'); loc.wait(); System.out.println('['+sdf.format(new Date())+'] t1___loc..執(zhí)行wait后續(xù)...'); Thread.sleep(1000); } System.out.println('['+sdf.format(new Date())+'] t1___loc..離開(kāi)鎖...');}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___進(jìn)入鎖...'); Thread.sleep(5000); System.out.println('['+sdf.format(new Date())+'] t3___loc..開(kāi)始 wait...'); loc.wait(); System.out.println('['+sdf.format(new Date())+'] t3___loc..執(zhí)行 wait后續(xù)...'); Thread.sleep(1000); } System.out.println('['+sdf.format(new Date())+'] t3___離開(kāi)鎖...');}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..開(kāi)始執(zhí)行 notify...'); loc.notify(); System.out.println('['+sdf.format(new Date())+'] t2___loc..執(zhí)行 notify后續(xù)...'); Thread.sleep(1000); } System.out.println('['+sdf.format(new Date())+'] t2___loc 離開(kāi)鎖....');}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....'); }

執(zhí)行結(jié)果:

[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..開(kāi)始執(zhí)行wait...

[16:56:04 392] t2___獲得鎖...[16:56:09 392] t2___loc..開(kāi)始執(zhí)行 notify...[16:56:09 392] t2___loc..執(zhí)行 notify后續(xù)...[16:56:10 392] t2___loc 離開(kāi)鎖....

[16:56:10 392] t3___進(jìn)入鎖...[16:56:15 392] t3___loc..開(kāi)始 wait...[16:56:15 392] t1___loc..執(zhí)行wait后續(xù)...[16:56:16 392] t1___loc..離開(kāi)鎖...t2___before join ....t3____before join ....

總結(jié):

1. 執(zhí)行wait后‘’暫時(shí)‘ 釋放當(dāng)前對(duì)象鎖給其他線程,當(dāng)前線程處于等待狀態(tài)

2. syn塊中的wait收到notify通知后 喚醒cpu 繼續(xù)判斷鎖狀態(tài)

3. 執(zhí)行notify且當(dāng)前的對(duì)象鎖釋放后 wait等待的線程激活

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 成人黄色在线 | 日韩精品视频网 | 日韩色图在线观看 | 蜜桃成人免费视频 | 国产69精品久久久久久久久久 | 国产在线一二三 | 亚洲色图欧美视频 | 国产精品成人在线视频 | 黄色一级免费片 | 亚洲天堂网在线观看 | 亚洲欧美视频在线观看 | 亚洲欧美日本一区 | 欧美a∨ | 99久久精品国产一区二区成人 | 亚洲成人激情在线 | 人体毛片| 亚洲黄色在线视频 | 久久久99国产精品免费 | 九九午夜 | 在线艹| 国产在线a视频 | 特级毛片在线播放 | 亚洲精品一区二区三区蜜桃 | 国产黄在线 | 伊人免费在线 | 天堂网在线观看 | 日韩精品视频观看 | 黄色看片网址 | 国产特黄毛片 | 91精品网| 懂色av蜜臀av粉嫩av分享吧 | 奇米久久久| 日韩美女视频一区 | 日韩国产一区 | 国产在线日韩 | 欧美粗又大 | 亚洲成人高清在线 | 欧美在线一区二区三区 | 亚洲欧洲久久 | 一区二区在线视频播放 | 激情综合五月婷婷 |