package com.day0207_2;
/** * 執行緒通訊的應用:經典例題:生產者/消費者
* * 生產者(productor)將產品交給店員(clerk),而消費者(customer)從店員處取走產品,
* 會叫生產者停一下,如果店中有空位放產品了再通知生產者繼續生產;如果店中沒有產品
* 了,店員會告訴消費者等一下,如果店中有產品了再通知消費者來取走產品。
* * 分析:
* 1.是否為多執行緒問題?是,生產者執行緒、消費者執行緒
* 2.是否有各項資料?是,店員(或產品)
* 3.如何解決執行緒的安全問題?同步機制,有三種方法
* 4.是否涉及到執行緒的通訊?是
* **/class
clerk
else
catch
(interruptedexception e)}}
//消費產品
public
synchronized
void
consumeproduct()
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.
consumeproduct()
;}}}
public
class
producttest
}
生產者消費者 生產者與消費者模式
一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...
生產者消費者
using system using system.collections.generic using system.threading namespace gmservice foreach thread thread in producers q.exit console.read public...
生產者消費者
執行緒通訊 乙個執行緒完成了自己的任務時,要通知另外乙個執行緒去完成另外乙個任務.wait 等待 如果執行緒執行了wait方法,那麼該執行緒會進入等待的狀態,等待狀態下的執行緒必須要被其他執行緒呼叫notify方法才能喚醒。notify 喚醒 喚醒執行緒池等待執行緒其中的乙個。notifyall 喚...