6.Java多線程之間的通訊

1.線程間線程的通訊( 生產(chǎn)者,消費者,產(chǎn)品對象之間互相溝通)
2.產(chǎn)品對象Product的代碼:
public class Product {
    public  String name;
    public  double price;
    public  boolean falg = false ; // flag = false 表示還沒生產(chǎn)好
}
3.生產(chǎn)者Producter的代碼:
/**
    生產(chǎn)者的的代碼
 */
public class Producter extends  Thread{
    Product p;
    //構(gòu)造方法糯崎,目的是為了訪問共同的一個對象
    public  Producter (Product p){
        this.p = p;
    }
    @Override
    public void run() {
        int i= 0 ;
        while (true){
            synchronized (p){
                if (p.falg == false){
                    if (i%2==0){
                        p.name = "摩托車";
                        p.price = 3000;
                    }else{
                        p.name = "自行車";
                        p.price = 400;
                    }
                    System.out.println("生產(chǎn)者生產(chǎn)了:"+p.name+",價格為:"+p.price);
                    i++;
                    //改變狀態(tài)
                    p.falg = true;
                    //通知消費者消費
                    p.notify();
                }else{
                    //等待了生成了
                    try {
                        p.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}
4.消費者Customer的代碼:
package com.bailing.線程通訊;

/**
    消費者
 */
public class Customer  extends  Thread{

    Product p;
    //創(chuàng)建構(gòu)造方法 (為了共享一個數(shù)據(jù))
    public  Customer(Product p){
        this.p = p;
    }
    @Override
    public void run() {
        while (true){
            synchronized (p){
                if (p.falg == true){
                    System.out.println("消費了產(chǎn)品:"+p.name+",價格為:"+p.price);
                    //改變狀態(tài)
                    p.falg = false;
                    //發(fā)送喚醒通知
                    p.notify();
                }else{
                    //要等待
                    try {
                        p.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}
5.主方法調(diào)用代碼:
/**
  測試線程
                     產(chǎn)品
            (wait())
        生成者         (nofity())              消費者

 注意點:
    1.wait()和nofiy(),nofiyall()這些方法都是object的方法
    2.wait和nofity()都是要鎖對象去調(diào)用的
    3.wait和nofity()都是在同步函數(shù)和同步代碼塊里面執(zhí)行的

 wait() 方法就是釋放了鎖
 wait()就是將鎖對象為標(biāo)志的線程放入到線程池中
 nofify()就是喚醒線程池中以該鎖對象標(biāo)注的線程喚醒
 */
public class Test {
    public static void main(String[] args) {
        //創(chuàng)建一個產(chǎn)品對象囊蓝,讓數(shù)據(jù)共享下
        Product product = new Product();
        //共享同一個數(shù)據(jù)
        Customer customer = new Customer(product);
        Producter producter = new Producter(product);
        //開始調(diào)用功能了
        customer.start();
        producter.start();
    }
}
2.線程同學(xué)中注意已下幾點:
通信的流程圖:
                               產(chǎn)品
            (wait())                     (wait())
        生成者         (nofity())        消費者
 注意點:
    1.wait()和nofiy(),nofiyall()這些方法都是object的方法
    2.wait和nofity()都是要鎖對象去調(diào)用的
    3.wait和nofity()都是在同步函數(shù)和同步代碼塊里面執(zhí)行的
    4.一個線程執(zhí)行了wait()方法說明改對象釋放了鎖對象
 wait() 方法就是釋放了鎖
 wait()就是將鎖對象為標(biāo)志的線程放入到線程池中
 nofify()就是喚醒線程池中以該鎖對象標(biāo)注的線程喚醒
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末镰官,一起剝皮案震驚了整個濱河市镣衡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摊唇,老刑警劉巖趋观,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诽偷,死亡現(xiàn)場離奇詭異,居然都是意外死亡用押,警方通過查閱死者的電腦和手機肢簿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜻拨,“玉大人池充,你說我怎么就攤上這事《兴希” “怎么了收夸?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長血崭。 經(jīng)常有香客問我卧惜,道長,這世上最難降的妖魔是什么夹纫? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任咽瓷,我火速辦了婚禮,結(jié)果婚禮上捷凄,老公的妹妹穿的比我還像新娘忱详。我一直安慰自己,他們只是感情好跺涤,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布贩挣。 她就那樣靜靜地躺著掰曾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上财异,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機與錄音舔示,去河邊找鬼尊浓。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的任岸。 我是一名探鬼主播再榄,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼享潜!你這毒婦竟也來了困鸥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤剑按,失蹤者是張志新(化名)和其女友劉穎疾就,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艺蝴,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡猬腰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了猜敢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姑荷。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缩擂,靈堂內(nèi)的尸體忽然破棺而出厢拭,到底是詐尸還是另有隱情,我是刑警寧澤撇叁,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布供鸠,位于F島的核電站,受9級特大地震影響陨闹,放射性物質(zhì)發(fā)生泄漏楞捂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一趋厉、第九天 我趴在偏房一處隱蔽的房頂上張望寨闹。 院中可真熱鬧,春花似錦君账、人聲如沸繁堡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椭蹄。三九已至,卻和暖如春净赴,著一層夾襖步出監(jiān)牢的瞬間绳矩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工玖翅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翼馆,地道東北人割以。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像应媚,于是被迫代替她去往敵國和親严沥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Java-Review-Note——4.多線程 標(biāo)簽: JavaStudy PS:本來是分開三篇的中姜,后來想想還是整...
    coder_pig閱讀 1,655評論 2 17
  • 一祝峻、進程和線程 進程 進程就是一個執(zhí)行中的程序?qū)嵗總€進程都有自己獨立的一塊內(nèi)存空間扎筒,一個進程中可以有多個線程。...
    阿敏其人閱讀 2,612評論 0 13
  • 微蹙的眉頭 藏著些許哀傷 我從不以過來人的身份點透 因為你最怕我說你為賦新詩 故作憂愁 這就是你的青春啊 你已長大...
    幽谷百合_cd87閱讀 228評論 2 2
  • 頭像換了 網(wǎng)名換了 留言不見了 說說不見了 你的世界沒有我了 就這樣抹殺了所有事情
    戲精w閱讀 83評論 2 0
  • #20160912每天一個關(guān)鍵詞# 愛心食堂 我現(xiàn)在所處的時候酬姆,正是最好的時期:上有老而都身體安好嗜桌、獨立自理,下有...
    勁汶閱讀 292評論 0 0