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

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

JAVA 線程通信相關知識匯總

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

兩個線程之間的通信

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

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

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

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

package com.sutaoyu.volatlt;public class Print { private int flag = 1; public void print1() { synchronized(this) { if(flag != 1) { try { //讓當前線程進入等入狀態 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方法,再開啟第三個線程來執行這個方法。

另外需要修改的地方是:

1.因為notifyAll方法可以喚醒所有等待狀態的線程,所有用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 { //讓當前線程進入等入狀態 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()方法。

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

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

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

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩三区免费| 亚洲免费观看高清完整版在线观| 激情91久久| 国内自拍视频一区二区三区| 中文不卡在线| 国产精品女主播一区二区三区| 人人精品亚洲| 国产成人免费精品| 国产一区二区三区四区大秀| 中文字幕亚洲影视| 日本大胆欧美人术艺术动态| 亚洲免费影院| 国产亚洲永久域名| 日本一区福利在线| 亚洲精品免费观看| 91av亚洲| 亚洲午夜电影| 欧美精品羞羞答答| 亚洲精选av| 日本va欧美va精品| 国产精品久久久久毛片大屁完整版 | 欧美一区二区三区高清视频| 国产精品啊啊啊| 综合欧美精品| 欧美在线不卡| 久久久国产精品入口麻豆| 免费观看亚洲天堂| 久久精品国产99国产| 精品视频自拍| 亚洲啊v在线| 午夜欧美巨大性欧美巨大| 91精品xxx在线观看| 999国产精品| 亚洲精华国产欧美| 亚洲一级淫片| 97久久超碰| 国产精品一区高清| 精品视频一二| 久久精品国内一区二区三区水蜜桃| 影视先锋久久| japanese国产精品| 日韩中文av| 成人在线超碰| 夜久久久久久| 国产免费久久| 最近高清中文在线字幕在线观看1| 三级精品视频| 国产日韩专区| 欧美在线看片| 日本在线高清| 亚洲一区不卡| 日韩美女国产精品| 国产成人精品福利| 99国产精品久久久久久久成人热| 日本在线一区二区三区| 精品国产乱码久久久久久1区2匹| 青青草伊人久久| 美女网站一区| 欧美亚洲网站| 黄色aa久久| 日韩一区欧美二区| 国产精品天天看天天狠| 高清在线一区| 亚洲一区激情| 国产美女久久| 中文在线а√在线8| 999久久久精品国产| 亚洲人成亚洲精品| 成人精品久久| 亚洲一区二区三区无吗| 久久97视频| 另类国产ts人妖高潮视频| 国产精品qvod| 亚洲免费观看| 欧美成人一二区| 亚洲综合日韩| 国产成人久久| 日韩国产一区二| 欧美福利专区| 国产欧美日韩影院| 夜夜精品视频| 国产欧美日韩视频在线| 色综合www| 欧美日韩一区自拍| av中文资源在线资源免费观看| 久久黄色影视| 视频一区二区中文字幕| 一本大道色婷婷在线| 日本欧美大码aⅴ在线播放| 99视频精品全部免费在线视频| 国产精品啊v在线| 亚洲精品在线二区| 精品一区毛片| 91日韩在线| 日韩高清不卡一区| 亚洲免费成人| 国产精品99免费看| 国产精品22p| 日韩一区中文| 美女尤物久久精品| 欧美69视频| 日韩啪啪电影网| 久久中文欧美| 欧美日韩a区| 综合亚洲色图| 美日韩精品视频| 欧美成人午夜| 私拍精品福利视频在线一区| 久久av网站| 91成人在线网站| 亚洲综合中文| 亚洲一区日本| 电影天堂国产精品| 成人在线黄色| 精品视频91| 麻豆精品视频在线| 国产精品白丝av嫩草影院| 婷婷成人av| 一区二区三区国产盗摄| 在线一区免费观看| 91精品国产自产在线观看永久∴ | 日韩精品久久久久久久软件91| 中文精品视频| 在线国产一区二区| 亚洲一级影院| 婷婷激情一区| 另类中文字幕国产精品| 日韩国产一区| 91看片一区| 国产一区二区三区亚洲| а√天堂8资源在线| 日韩国产欧美一区二区| 久久久久久久久久久妇女| 深夜视频一区二区| 999精品一区| 夜夜嗨一区二区| 亚洲午夜国产成人| 日韩av一二三| 精品中国亚洲| 国产伦久视频在线观看| 日本一区二区高清不卡| 91综合网人人| 久久美女性网| 日韩精品一区二区三区免费观影| 在线看片福利| sm捆绑调教国产免费网站在线观看| 麻豆91精品视频| 久久久久伊人| 久久久久国产精品一区三寸| 亚洲午夜在线| 性色一区二区| 久久激情五月婷婷| 高清一区二区三区| 国内精品福利| 亚洲精品美女91| 亚洲视频www| 欧美在线精品一区| 国产传媒av在线| 午夜久久一区| 日韩激情av在线| 电影91久久久| 国产综合亚洲精品一区二| 欧美日韩视频| 香蕉久久一区| 麻豆视频久久| 激情久久五月| 亚洲欧美日韩国产综合精品二区| 欧美.日韩.国产.一区.二区 | 色一区二区三区| 亚洲精品婷婷| 国产精品99久久精品| 国产高清一区| 国产精品亲子伦av一区二区三区| 日韩精品首页| 日本不卡的三区四区五区| 国产精品99在线观看| 日韩中文字幕91| 精品久久不卡| 美女黄网久久| 韩国一区二区三区视频| 91九色精品| 国产伦乱精品| 欧美日韩色图| 久久精品一区| 亚洲精品九九| 欧美日韩亚洲在线观看| 日韩手机在线| 欧美日韩高清| 国产精品啊v在线| 好吊视频一区二区三区四区| 免费成人性网站| 欧美成人a交片免费看| 日韩精品欧美成人高清一区二区| 日韩影院二区| 国产欧美日韩视频在线| 九一国产精品| 黄色精品视频| 国产精久久久| 精品资源在线| 精品资源在线|