java多執行緒之生產者與消費者案例

2021-08-02 11:55:02 字數 1215 閱讀 3846

多生產者,多消費者的問題。

if判斷標記,只有一次,會導致不該執行的執行緒執行了。出現了資料錯誤的情況。

while判斷標記,解決了執行緒獲取執行權後,是否要執行!

notify:只能喚醒乙個執行緒,如果本方喚醒了本方,沒有意義。而且while判斷標記+notify會導致死鎖。

notifyall解決了本方執行緒一定會喚醒對方執行緒的問題。

**如下:

/**

* 操作資源物件

* @author fanyuan

* */

class resource

catch(interruptedexception e){}// t1 t0

this.name = name + count;//烤鴨1 烤鴨2 烤鴨3

count++;//2 3 4

system.out.println(thread.currentthread().getname()+"...生產者..."+this.name);//生產烤鴨1 生產烤鴨2 生產烤鴨3

flag = true;

notifyall();

} public synchronized void out()// t3

catch(interruptedexception e){} //t2 t3

system.out.println(thread.currentthread().getname()+"...消費者........"+this.name);//消費烤鴨1

flag = false;

notifyall(); }}

/** * 生產者

* @author fanyuan

* */

class producer implements runnable

public void run() }

}/**

* 消費者

* @author fanyuan

* */

class consumer implements runnable

public void run() }

}class producerconsumerdemo

}

執行結果:

整理自示例**

Java多執行緒之消費者生產者模式

這個例項應該是學習執行緒的乙個經典例子,生產者和消費者模式。寫的很好,詳細請看內容。author shijin 生產者與消費者模型中,要保證以下幾點 1 同一時間內只能有乙個生產者生產 生產方法加鎖sychronized 2 同一時間內只能有乙個消費者消費 消費方法加鎖sychronized 3 生...

java多執行緒之消費者生產者模式

author shijin 生產者與消費者模型中,要保證以下幾點 1 同一時間內只能有乙個生產者生產 生產方法加鎖sychronized 2 同一時間內只能有乙個消費者消費 消費方法加鎖sychronized 3 生產者生產的同時消費者不能消費 生產方法加鎖sychronized 4 消費者消費的同...

Java 多執行緒之生產者消費者模型

package com.yuanlief public class main 共享資料類 class mydata 共享資料控制類 class sharedata catch interruptedexception e this.data data writeable false 標記已經生產 n...