生產者消費者問題(第二版公升級版本)

2021-10-08 18:38:53 字數 1751 閱讀 1279

接上文乙個簡易的生產者消費者問題,現在我們利用以前所學到的知識來對生產者消費者問題進行」公升級「

書本類:

class

otherbook

public

otherbook

(string name)

public string getname()

public

void

setname

(string name)

}

定義乙個生產者和消費者之間的儲存倉庫:

class

store

catch

(interruptedexception e)

} linkedlist.

add(

newotherbook()

);// 當倉庫中無書或倉庫未滿時,生產者進行生產

system.out.

println

("生產者:"

+ thread.

currentthread()

.getname()

+"生產了乙個產品,庫存為"

+ linkedlist.

size()

);linkedlist.

notifyall()

;// 通知所有等待執行緒開啟}}

public

void

consume()

catch

(interruptedexception e)

}// 若是存在可消費物件,則進行消費

system.out.

println

("消費");

linkedlist.

remove()

; linkedlist.

notifyall()

;}}}

當生產者要生產之前判斷倉庫中是否已滿,若未滿則生產,反之不生產;消費者想要消費前判斷倉庫中是否要貨物,有就消費,沒有就等待生產者生產。

消費者類:

class

otherconsumer

implements

runnable

public

otherconsumer

(store store)

@override

public

void

run(

)catch

(interruptedexception e)}}

}

生產者類:

class

otherproducer

implements

runnable

public

otherproducer

(store store)

@override

public

void

run(

)catch

(interruptedexception e)}}

}

測試類:

public

class

ohterversion

}

測試結果:

生產者消費者問題

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 ...