多執行緒 鎖的妙用之消費者,生產者的運用

2021-10-06 16:48:57 字數 1935 閱讀 2080

有這樣乙個需求,每當乙個生產機器生產出乙個麵包的時候,要等消費者消費完了再繼續生產.

package com.ancely.fyw;

public class fooddemo catch (interruptedexception e) }}

public synchronized void outfood() catch (interruptedexception e) }}

public static class productthread extends thread

@override

public void run() }}

public static class consumethread extends thread

@override

public void run() }}

public static void main(string args)

}

列印結果如下

thread-0 生產者: 生產了: 1

thread-1 >>>>>>>>>>>>>消費者: 消費了: 1

thread-0 生產者: 生產了: 2

thread-1 >>>>>>>>>>>>>消費者: 消費了: 2

thread-0 生產者: 生產了: 3

thread-1 >>>>>>>>>>>>>消費者: 消費了: 3

thread-0 生產者: 生產了: 4

thread-1 >>>>>>>>>>>>>消費者: 消費了: 4

thread-0 生產者: 生產了: 5

thread-1 >>>>>>>>>>>>>消費者: 消費了: 5

thread-0 生產者: 生產了: 6

thread-1 >>>>>>>>>>>>>消費者: 消費了: 6

thread-0 生產者: 生產了: 7

thread-1 >>>>>>>>>>>>>消費者: 消費了: 7

thread-0 生產者: 生產了: 8

thread-1 >>>>>>>>>>>>>消費者: 消費了: 8

thread-0 生產者: 生產了: 9

thread-1 >>>>>>>>>>>>>消費者: 消費了: 9

thread-0 生產者: 生產了: 10

thread-1 >>>>>>>>>>>>>消費者: 消費了: 10

thread-0 生產者: 生產了: 11

thread-1 >>>>>>>>>>>>>消費者: 消費了: 11

thread-0 生產者: 生產了: 12

thread-1 >>>>>>>>>>>>>消費者: 消費了: 12

thread-0 生產者: 生產了: 13

thread-1 >>>>>>>>>>>>>消費者: 消費了: 13

thread-0 生產者: 生產了: 14

thread-1 >>>>>>>>>>>>>消費者: 消費了: 14

thread-0 生產者: 生產了: 15

thread-1 >>>>>>>>>>>>>消費者: 消費了: 15

thread-0 生產者: 生產了: 16

thread-1 >>>>>>>>>>>>>消費者: 消費了: 16

thread-0 生產者: 生產了: 17

thread-1 >>>>>>>>>>>>>消費者: 消費了: 17

thread-0 生產者: 生產了: 18

thread-1 >>>>>>>>>>>>>消費者: 消費了: 18

thread-0 生產者: 生產了: 19

thread-1 >>>>>>>>>>>>>消費者: 消費了: 19

thread-0 生產者: 生產了: 20

thread-1 >>>>>>>>>>>>>消費者: 消費了: 20

多執行緒 生產者消費者

這個就不多說了,直接上 include include using namespace std const unsigned short size of buffer 10 緩衝區長度 unsigned short productid 0 產品號 unsigned short consumeid 0...

Linux多執行緒 生產者消費者

生產者消費者問題 這是乙個非常經典的多執行緒題目,題目大意如下 有乙個生產者在生產產品,這些產品將提供給若干個消費者去消費,為了使生產者和消費者能併發執行,在兩者之間設定乙個有多個緩衝區的緩衝池,生產者將它生產的產品放入乙個緩衝區中,消費者可以從緩衝區中取走產品進行消費,所有生產者和消費者都是非同步...

多執行緒 生產者消費者佇列

就以alibaba的筆試題舉例吧。題目大概的意思如下 有乙個籃子,最多容納5個蘋果。有人一直往裡放蘋果。有人一直去蘋果。寫出實現。ali要求不能用concurrent包裡面的東西,所以只能用最簡單的notify和wait。如果可以用concurrent包裡面的東西,還可以用blockingqueue...