日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

JAVA 線程通信相關知識匯總

瀏覽:111日期:2022-08-31 08:30:24

兩個線程之間的通信

多線程環(huán)境下CPU會隨機的在線程之間進行切換,如果想讓兩個線程有規(guī)律的去執(zhí)行,那就需要兩個線程之間進行通信,在Object類中的兩個方法wait和notify可以實現(xiàn)通信。

wait方法可以使當前線程進入到等待狀態(tài),在沒有被喚醒的情況下,線程會一直保持等待狀態(tài)。notify方法可以隨機喚醒單個在等待狀態(tài)下的線程。

來實現(xiàn)這樣的一個功能:讓兩個線程交替在控制臺輸出一行文字

定義一個Print類,有兩個方法print1和print2,分別打印一行不同的內容

package com.sutaoyu.volatlt;public class Print { private int flag = 1; public void print1() { synchronized(this) { if(flag != 1) { try { //讓當前線程進入等入狀態(tài) this.wait(); }catch(InterruptedException e) { e.printStackTrace(); } } System.out.println('monkey'); flag = 2; //隨機的喚醒單個等待的線程 this.notify(); } } public void print2() { synchronized(this) { if(flag != 2) { try { this.wait(); }catch (InterruptedException e){ e.printStackTrace(); } } System.out.println('1024'); flag = 1; this.notify(); } }}

定義線程測試類,開啟兩個線程,分別運行Print類中print1和print2方法

package com.sutaoyu.volatlt;public class NotifyTest01 { public static void main(String[] args) { Print p = new Print(); Thread t1 = new Thread() { public void run() { while(true) { p.print1(); } } }; Thread t2 = new Thread() { public void run() { while(true) { p.print2(); } } }; t1.start(); t2.start(); }}

三個及三個以上的線程之間的通信

改造上面代碼在Print類中添加一個print3方法,再開啟第三個線程來執(zhí)行這個方法。

另外需要修改的地方是:

1.因為notifyAll方法可以喚醒所有等待狀態(tài)的線程,所有用notifyAll方法來替代notify方法

2.當線程被喚醒后,需要先判斷一下flag的值,if不會重新判斷flag值,而while會重新判斷flag的值,所以將Print中的if判斷修改為while判斷。

package com.sutaoyu.volatlt;public class Print { private int flag = 1; public void print1() { synchronized(this) { while(flag != 1) { try { //讓當前線程進入等入狀態(tài) this.wait(); }catch(InterruptedException e) { e.printStackTrace(); } } System.out.println('monkey'); flag = 2; //隨機的喚醒單個等待的線程 this.notifyAll(); } } public void print2() { synchronized(this) { while(flag != 2) { try { this.wait(); }catch (InterruptedException e){ e.printStackTrace(); } } System.out.println('1024'); flag = 3; this.notifyAll(); } } public void print3() { synchronized(this) { while(flag != 3) { try { this.wait(); }catch(InterruptedException e) { e.printStackTrace(); } } System.out.println('888'); flag = 1; this.notifyAll(); } }}

package com.sutaoyu.volatlt;public class NotifyTest01 { public static void main(String[] args) { Print p = new Print(); Thread t1 = new Thread() { public void run() { while(true) { p.print1(); } } }; Thread t2 = new Thread() { public void run() { while(true) { p.print2(); } } }; Thread t3 = new Thread() { public void run() { while(true) { p.print3(); } } }; t1.start(); t2.start(); t3.start(); }}

線程通信注意事項

在print1,2,3方法中同步代碼塊中使用哪個對象作為鎖,那在調用wait和notify方法時一定要調用這個對象上的wait和notify方法。上面程序使用this作為對象鎖,在下面調用的都是this.wait()和this.notify()方法。

在多線程執(zhí)行當中wait方法釋放對象鎖,根據(jù)上面的代碼示例,t1,t2,t3三個線程使用的是同一個對象鎖,如果wait方法不釋放鎖的話,別的線程就不能獲取到該鎖,也就不能獲取cpu的執(zhí)行權了。

sleep和notify方法不釋放對象鎖,上面代碼示例中,如果notify方法釋放鎖的話,別的線程就有可能獲取到cpu的執(zhí)行權,這樣子就會導致當前notify方法后面的代碼還未執(zhí)行完畢就失去了cpu的執(zhí)行權,從而導致一些問題,只有當線程執(zhí)行完synchronized代碼塊后才會釋放鎖。

以上就是JAVA 線程通信相關知識匯總的詳細內容,更多關于JAVA 線程通信的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
一二三区精品| 久久精品91| 日韩精品中文字幕第1页| 日韩精品导航| 日本欧洲一区二区| 国户精品久久久久久久久久久不卡| 国产视频一区二区在线播放| 在线亚洲成人| 婷婷久久一区| 欧美另类综合| 久久中文字幕二区| 久久久久久久久久久9不雅视频| 国产精品一区二区三区美女 | 影院欧美亚洲| 亚洲激情av| 亚洲69av| 国产v日韩v欧美v| 亚洲美洲欧洲综合国产一区 | 国产剧情在线观看一区| 日韩中文欧美在线| 新版的欧美在线视频| 亚洲三区欧美一区国产二区| 欧美精品影院| 欧美日韩一区二区三区不卡视频 | 日本免费一区二区三区四区| 久久精品超碰| 男女性色大片免费观看一区二区| 伊人精品一区| 精品中国亚洲| 香蕉久久久久久久av网站| 国产精品xxx在线观看| 成人羞羞视频播放网站| 久久精品二区三区| 日韩午夜精品| 日韩精品免费视频一区二区三区 | 国产高清久久| 中文无码久久精品| 久久99青青| 99久久99久久精品国产片果冰 | 久久蜜桃av| 久久久久久久久久久妇女| 九一精品国产| 久久这里只有| 精品视频网站| 国产成人久久| 亚洲女人av| 日韩三级久久| 欧美日一区二区在线观看| 天堂网在线观看国产精品| 亚洲成人免费| 国产精品中文| 99日韩精品| 日韩毛片网站| 日韩成人综合| 日韩专区一卡二卡| 日韩综合一区二区| 国产不卡精品| 国产综合精品| 91精品日本| 国产一区一一区高清不卡| 韩国精品主播一区二区在线观看| 欧美福利一区| 鲁大师精品99久久久| 红桃视频国产精品| 日韩激情一区| 国产精品久久久久蜜臀| 国产精品一在线观看| 亚洲精品日本| 亚洲精品日本| 91精品国产一区二区在线观看| 亚洲精品少妇| 亚洲性视频在线| 最新日韩欧美| 一区二区国产在线| 国产亚洲欧美日韩精品一区二区三区| 日韩动漫一区| 国产精品xxxav免费视频| 亚洲欧美久久久| 亚洲a级精品| 国产日韩欧美一区在线| 国产96在线亚洲| 欧美高清不卡| 五月亚洲婷婷 | 日韩精品久久久久久久电影99爱| 成人看片网站| 蜜桃av一区二区三区电影| 97成人在线| 高清日韩欧美| 在线一区免费| 精品福利久久久| 国内精品福利| 国产精品久久久久久久久免费高清 | 精品欧美久久| 久久av免费| 不卡在线一区| 欧美久久一区二区三区| 久久久久久久久久久妇女| 亚洲精品影视| 蜜臀国产一区| 欧美精品成人| 欧美日韩在线二区| 国产精品亚洲四区在线观看| 亚洲精品888| 久久一区亚洲| 日韩精品免费一区二区夜夜嗨 | 精品亚洲成人| 亚洲精品美女91| 亚洲不卡系列| 国产精品网址| 日韩综合一区二区三区| 久久精品亚洲欧美日韩精品中文字幕| 久久狠狠久久| 亚洲作爱视频| 91精品亚洲| 国产精品成人a在线观看| 日本不卡视频在线| 石原莉奈在线亚洲三区| 亚洲午夜av| bbw在线视频| 国产精品视频一区视频二区| 亚洲区国产区| 日韩一区二区三区在线看| 久久久人人人| 久久久久久一区二区| 国产精品自拍区| 欧美日韩亚洲一区三区| 免费在线亚洲欧美| 欧美日韩一区二区综合| 日韩高清不卡一区二区| 亚洲性视频h| 欧美成人高清| 国产色综合网| 视频在线观看一区| 蜜臀av一区二区在线免费观看| 九九久久电影| 另类国产ts人妖高潮视频| 激情欧美日韩一区| 亚洲高清成人| 国产视频一区欧美| 亚洲精品进入| 亚洲制服少妇| 成人亚洲欧美| 亚洲一区资源| 成人精品久久| 91成人精品观看| 久久狠狠亚洲综合| 你懂的国产精品| 亚洲精品综合| 精品一区免费| 视频在线观看91| 久久久久久美女精品| 开心激情综合| 久久婷婷久久| 日本综合字幕| 国产精品二区不卡| 亚洲最新无码中文字幕久久| 成人三级高清视频在线看| 九色精品91| 国产欧美成人| 久久一级电影| 日韩av网站在线观看| 日韩在线二区| 亚洲精品影视| 亚洲午夜天堂| 欧美欧美黄在线二区| 欧美午夜精彩| 国产日韩一区二区三免费高清| 99久久99视频只有精品| 日韩不卡一区二区| 日韩精品影视| 中文无码日韩欧| av免费不卡国产观看| 日韩av一二三| 美女久久久久| 精品一区二区三区在线观看视频| 国产一级一区二区| 狠狠久久伊人| 日韩国产91| 亚洲资源av| 国产一区日韩一区| 国产精品中文字幕制服诱惑| 国产91精品对白在线播放| 久久av免费看| 日本欧美一区| 日本在线观看不卡视频| 久久高清免费| 国产精品毛片久久久| 日韩高清国产一区在线| 伊人成人在线视频| 亚洲高清二区| 国产字幕视频一区二区| 日韩av免费大片| 国产精品久久久久久av公交车| 蜜臀av一区二区在线免费观看| 怡红院精品视频在线观看极品| 亚洲成人国产| 亚洲精品小说| 性欧美长视频| 另类亚洲自拍| 日韩欧美三区|