您好,登錄后才能下訂單哦!
這篇文章主要介紹了Java線程的通信怎么實現(xiàn)的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Java線程的通信怎么實現(xiàn)文章都會有所收獲,下面我們一起來看看吧。
//協(xié)作模型——生產者消費者實現(xiàn)方式一——信號燈法//借助標志位----flag是關鍵public class ThreadCopperator02 {public static void main(String[] args) {Tv tv=new Tv();new Watcher(tv).start();new Player(tv).start(); } }//消費者 觀眾class Watcher extends Thread{Tv tv;public Watcher(Tv tv) {this.tv = tv; }@Override public void run() {for (int i = 0; i < 20; i++) {tv.watch(); } } }//生產者 演員class Player extends Thread{Tv tv;public Player(Tv tv) {this.tv = tv; }@Override public void run() {for (int i = 0; i < 20; i++) {if(i%2==0){this.tv.play("奇葩說"); }else{this.tv.play("立白"); } } } }//同一個資源 電視class Tv{String voice;//信號燈 //如果為true,則演員表演,觀眾等待 //如果為false,觀眾觀看,演員等待 boolean flag=true;public synchronized void play(String voice){//演員等待 if(!flag){try {this.wait();//wait會釋放鎖 } catch (InterruptedException e) { e.printStackTrace(); } }//表演 System.out.println("表演了"+voice);this.voice=voice;//喚醒了watch的線程的wait,從而執(zhí)行下面的程序 ,從而輸出”聽到了。。?!?nbsp; this.notifyAll();//切換標志 this.flag=!flag; }//因為有鎖,所以線程要等待,一個一個地來 public synchronized void watch(){//觀眾等待 if(flag){try {this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } }//觀看 System.out.println("聽到了"+voice);//喚醒了play的線程的wait,從而執(zhí)行下面的程序 ,從而輸出”表演了。。?!?nbsp; this.notifyAll();//切換標志 this.flag=!flag; } }
關于“Java線程的通信怎么實現(xiàn)”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Java線程的通信怎么實現(xiàn)”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。