溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java線程的通信怎么實現(xiàn)

發(fā)布時間:2022-01-11 17:27:32 來源:億速云 閱讀:101 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹了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è)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI