生產者消費者問題

2021-10-19 14:24:18 字數 1296 閱讀 3126

多執行緒之間的資料通訊方法

生產者消費者模式

生產/消費者問題是個非常典型的多執行緒問題,涉及到的物件包括生產者、消費者、倉庫和產品。他們之間的關係如下:

編碼實現

倉庫類,產品就是倉庫的屬性data

//臨界資源

public

class

basket

catch

(interruptedexception e)

//如果沒有資料則進行生產操作

this

.data=data;

system.out.

println

(thread.

currentthread()

.getname()

+"生產了乙個日期"

+this

.data)

;this

.notifyall()

;//喚醒在當前物件上處於wait的所有執行緒

}//消費者從倉庫中消費資料

public

synchronized

void

consume()

catch

(interruptedexception e)

//如果有資料data!=null,則執行消費操作

system.out.

println

(thread.

currentthread()

.getname()

+"消費了乙個資料"

+this

.data)

;this

.data=null;

this

.notifyall()

;//喚醒在當前物件上處於wait的所有執行緒

}}

生產者執行緒負責生產產品,並和消費者共享倉庫

public

class

producer

extends

thread

@override

public

void

run()}

}

消費者執行緒負責消費產品,並和生產者共享倉庫

public

class

consumer

extends

thread

@override

public

void

run()}

}

生產者消費者問題

public class producer consumer class godown public godown int num public synchronized void produce int n catch interruptedexception e curr num n syste...

生產者 消費者問題

在學習程序互斥中,有個著名的問題 生產者 消費者問題。這個問題是乙個標準的 著名的同時性程式設計問題的集合 乙個有限緩衝區和兩類執行緒,它們是生產者和消費者,生產者把產品放入緩衝區,相反消費者便是從緩衝區中拿走產品。生產者在緩衝區滿時必須等待,直到緩衝區有空間才繼續生產。消費者在緩衝區空時必 須等待...

生產者 消費者問題

1 程序互斥問題 緩衝區b是臨界資源,程序p和c不能同時對b進行操作,即只能互斥的操作 2 程序同步問題 p不能往 滿 的的緩衝區b放產品,c不能從空的緩衝區獲得產品。當緩衝區滿時,c必須先於p執行,當緩衝區空時,p必須先於c執行 我們給出如下基於記錄型 二元 訊號量機制的解法 10 9 2013 ...