多執行緒20 管程法

2022-08-30 12:48:09 字數 1618 閱讀 8015

解決方式1:

併發協作模型"生產者/消費者模式"--->管程法

思路:1.首先有乙個生產者,消費者、生產者只顧生產,消費者只管消費、

2.利用了乙個緩衝區,緩衝了乙個10個大小的陣列

3.有個方法叫放入產品,產品丟進來的時候,我們判斷一下緩衝區有沒有滿,如果滿了的話,生產者就要等待了,

如果沒有滿,就將產品放進去,放進去之後有產品了,趕緊通知消費者消費

4.消費者就判斷下能不能消費呢,有沒有東西,有東西的話,我就可以直接消費,消費完了,就趕緊通知生產者生產。

如果沒有東西呢,消費者就等待。等待生產者去通知他,生產者通知了,他就可以解除等待了。

1

package

com.thread.gaoji;23

//測試: 生產者消費者模型-->利用緩衝區解決:管程法45

//生產者 , 消費者 , 產品 , 緩衝區

6public

class

testpc 14}

1516

//生產者

17class productor extends

thread

2324

//生產

25@override

26public

void

run() 31}

32}3334

//消費者

35class consumer extends

thread

4142

//消費

43@override

44public

void

run() 48}

49}5051

//產品

52class

chicken 58}

5960

//緩衝區

61class

syncontainer catch

(interruptedexception e) 79}

80//

如果沒有滿,我們需要丟入產品

81 chickens[count] =chicken;

82 count++;

8384

//可以通知消費者消費了.

85this

.notifyall();86}

8788

//消費者消費產品

89public

synchronized

chicken pop() catch

(interruptedexception e) 98}

99100

//如果可以消費

101 count--;

102 chicken chicken =chickens[count];

103104

//吃完了,通知生產者生產

105this

.notifyall();

106return

chicken;

107}

108 }

多執行緒(管程法)

管程法 什麼是管程法?就是併發協作模型 生產者 消費者模式 實現方式的一種。思想 1.首先需要四個角色 1.生產者2.消費者3.緩衝區4.饅頭 2.生產者生產饅頭放到緩衝區,緩衝區如果滿了,生產者停止運作,進入等待 3.消費者從緩衝區拿饅頭,如果緩衝區饅頭沒有了,先喚醒生產者,然後進入等待 協作模型...

多執行緒25 管程法

利用快取區存放資料 package com.faq.gaoji 測試 生產者消費者模型 利用緩衝區解決 管程法 生產者 消費者 產品 緩衝區 public class testpc 生產者 class productor extends thread 生產 override public void ...

多執行緒 23 併發協作 管程法

併發協作模型生產者消費者模式的第一種管程法,它的核心要點是加了緩衝區,有了緩衝區之後,生產者和消費者之間解耦了,比如超市的中間商,生產者向中間商發商品,超市向中間商進商品,而生產者並不知道商品買給誰了。分析這個模型有幾個角色 第乙個角色生產者,第二個角色消費者,它們兩個是多執行緒,第三個是併發容器也...