經典問題生產者 消費者問題

2021-10-04 20:57:01 字數 1148 閱讀 2933

生產者(productor)將產品交給店員(clerk),而消費者(customer)從店員處

取走產品,店員一次只能持有固定數量的產品(此如:20),如果生產者試圖

生產更多的產品,店員會叫生產者停- -下,如果店中有空位放產品了再通

知生產者繼續生產;如果店中沒有產品了,店員會告訴消費者等-一下,如

果店中有產品了再通知消費者來取走產品。

?●這裡可能出現兩個問題::

➢生產者比消費者快時,消費者會漏掉–些資料沒有取到。

➢消費者比生產者快時,消費者會取相同的資料。

//分析:

//1:是否是多執行緒問題?是,生產者執行緒,消費者執行緒

//2:是否有共享資料?是,店員(或產品)

//3:如何解決執行緒的安全問題?同步機制,有三總方法

//4:是否涉及執行緒的通訊?是

class

clerk

else

catch

(interruptedexception e)}}

public

synchronized

void

comsumeproduct()

else

catch

(interruptedexception e)}}

}class

producer

extends

thread

@override

public

void

run(

)catch

(interruptedexception e)

clerk.

produceproduct()

;}}}

class

consumer

extends

thread

@override

public

void

run(

)catch

(interruptedexception e)

clerk.

comsumeproduct()

;}}}

public

class

dame7

}

生產者消費者問題

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