手寫生產 消費者的實現(通過阻塞佇列實現)

2021-09-26 06:03:57 字數 1314 閱讀 6642

思路分析:

1、兩個執行緒、乙個生產、乙個消費,要保證可見性,所以需要volatile

2、多執行緒下要保證原子性,所以生產消費的資料用iatomicnteger

3、使用那種阻塞佇列需要依賴傳入的引數來決定,所以構造傳介面進來

4、使用阻塞佇列中包含超時的offer、poll

**實現:

/**

* @title: myresource

* @description: 實現生產-消費者

* @author:quliangquan

* @date 2019/8/16 16:22

**///資源類

public

class

myresource

public

void

myprod()

throws exception

else

timeunit.seconds.

sleep(1

);} system.out.

println

(thread.

currentthread()

.getname()

+" 叫停了、不生產了");

}public

void

myconsumer()

throws exception

system.out.

println

(thread.

currentthread()

.getname()

+" 消費 "

+ res +

" 成功");

}}public

void

stop()

public

static

void

main

(string[

] args)

throws exception

catch

(exception e)},

"prod").

start()

;new

thread((

)->

catch

(exception e)},

"consumer").

start()

; timeunit.seconds.

sleep(5

);system.out.

println

("叫停");

myresource.

stop()

;}}

物件導向寫生產者與消費者的例子(java)

生產者 消費者 producer consumer 問題是乙個著名的程序同步問題。它描述的是 有乙個生產者程序在生產產品,並將這些產品提供給消費者程序去消費。為使生產者程序與消費者程序併發執行,在兩者之間設定了乙個具有n個緩衝池,生產者程序將它所生產的產品放入乙個緩衝區中 消費者程序從乙個緩衝區中取...

阻塞佇列之生產者與消費者

前段時間因為專案中對生產者與消費者的需求,故整理了一下對阻塞佇列。不說了,直接上 public class blockingqueuetest public void run catch interruptedexception e public void shutdown 消費者 public s...

vc實現生產者消費者

生產者消費者問題是乙個著名的程序同步問題。它的描述是 有一群生產者程序在生產產品,並將這些產品提供給消費者程序去消費。為使生產者程序與消費者程序能併發執行,在兩者之間設定了乙個具有n個緩衝區的緩衝池,生產者程序將它所生產的產品放入乙個緩衝區中 消費者程序可從緩衝區中取走產品去消費。儘管所有的生產者程...