生產者與消費者問題 java實現

2021-07-05 18:29:42 字數 2418 閱讀 9328

定義麵包類:

package producerandconsumer;

public

class bread

}

定義乙個籃子,裡邊放乙個陣列存放麵包:

package producerandconsumer;

public

class basket catch (interruptedexception e)

}// 喚醒乙個正在等待的執行緒,如果喚醒的執行緒為生產線程,則又會進入等待狀態,

// 如果為消費執行緒,則因生產線程生產了麵包的緣故,消費執行緒可以進行消費

this.notify();

basket[this.index] = bread;

this.index++;

system.out.println("生產者"+bread.producerid+"生產乙個麵包");

}public synchronized void

pop(int index) catch (interruptedexception e)

}this.notify();

basket[this.index]=null;

this.index--;

system.out.println("消費者"+index+"取走乙個麵包");

}}

定義生產者者:

package producerandconsumer;

public

class

producer

implements

runnable

public

void

run() catch (interruptedexception e) }}

}

定義消費者:

package producerandconsumer;

public

class

consumer

implements

runnable

public

void

run() catch (interruptedexception e) }}

}

測試類:

package producerandconsumer;

public

class launcher

}

資料

生產者1生產乙個麵包

生產者2生產乙個麵包

消費者1取走乙個麵包

消費者2取走乙個麵包

生產者2生產乙個麵包

消費者1取走乙個麵包

消費者等待。。。。。。。。

生產者1生產乙個麵包

消費者2取走乙個麵包

生產者2生產乙個麵包

消費者2取走乙個麵包

生產者1生產乙個麵包

消費者1取走乙個麵包

生產者1生產乙個麵包

消費者1取走乙個麵包

消費者等待。。。。。。。。

生產者2生產乙個麵包

消費者2取走乙個麵包

生產者2生產乙個麵包

消費者2取走乙個麵包

消費者等待。。。。。。。。

生產者1生產乙個麵包

消費者1取走乙個麵包

生產者2生產乙個麵包

消費者2取走乙個麵包

消費者等待。。。。。。。。

生產者1生產乙個麵包

消費者1取走乙個麵包

消費者等待。。。。。。。。

消費者等待。。。。。。。。

生產者2生產乙個麵包

消費者2取走乙個麵包

消費者等待。。。。。。。。

生產者1生產乙個麵包

消費者1取走乙個麵包

生產者2生產乙個麵包

生產者1生產乙個麵包

消費者2取走乙個麵包

消費者1取走乙個麵包

生產者2生產乙個麵包

消費者2取走乙個麵包

消費者等待。。。。。。。。

生產者1生產乙個麵包

消費者1取走乙個麵包

消費者等待。。。。。。。。

生產者2生產乙個麵包

生產者1生產乙個麵包

消費者2取走乙個麵包

消費者1取走乙個麵包

生產者2生產乙個麵包

消費者2取走乙個麵包

消費者等待。。。。。。。。

生產者1生產乙個麵包

消費者1取走乙個麵包

生產者消費者問題(java實現)

1 生產者 消費者模型 若容器容量為1 生產者執行緒 if a 1 a notify 消費者 if a 0 a notify 2 下面是乙個 實現 簡單的快取容量只有1,即 若容器中有乙個了,就不能再生產了 1 最基本的寫法 資源類 public class sample catch interru...

Java實現生產者消費者問題

生產者 消費者 producer consumer 問題,也稱作有界緩衝區 bounded buffer 問題,兩個程序共享乙個公共的固定大小的緩衝區。其中乙個是生產者,用於將訊息放入緩衝區 另外乙個是消費者,用於從緩衝區中取出訊息。問題出現在當緩衝區已經滿了,而此時生產者還想向其中放入乙個新的資料...

Java消費者生產者問題

乙個執行緒作為生產者,乙個執行緒作為消費者。生產者和消費者在同時執行。生產者每生產一次消費者就消費一次。生產和消費的數量用隨機數來表示。要求 生產者的數量和上次消費後的剩餘數量和不大於1000.sleep 可以指定休眠的時間,如果沒有其他操作,那麼到點自然醒。如果sleep有鎖資源,那麼不釋放 執行...