package pcproblem;
/** * 生產者-消費者模型--》利用緩衝區解決:管程法
*/public
class
pctest
}//生產者
class
productor
extends
thread
//生產
@override
public
void
run()}
}//消費者
class
consumer
extends
thread
//消費
@override
public
void
run()}
}//產品
class
chicken
}//緩衝區
class
syncontainer
catch
(interruptedexception e)
}//如果沒有滿,我們就需要丟入產品
chickens[count]
= chicken;
count++
;//可以通知消費者消費了
this
.notifyall()
;}//消費者消費產品
public
synchronized chicken pop()
catch
(interruptedexception e)
}//如果可以消費
count--
; chicken chicken = chickens[count]
;//吃完了,通知生產者生產
this
.notifyall()
;return chicken;
}}
package pcproblem;
/** * 生產者-消費者模型--》利用標誌位解決:訊號燈法
*/public
class
pctest2
}//生產者-》演員
class
player
extends
thread
@override
public
void
run(
)else}}
}//消費者-》觀眾
class
watcher
extends
thread
@override
public
void
run()}
}//產品-》節目
class
tvcatch
(interruptedexception e)
} system.out.
println
("演員表演了:"
+ voice)
;//通知觀眾**
this
.notifyall()
;//通知喚醒
this
.voice = voice;
this
.flag =
!this
.flag;
}//**
public
synchronized
void
watch()
catch
(interruptedexception e)
} system.out.
println
("**了:"
+ voice)
;//通知演員表演
this
.notifyall()
;this
.flag =
!this
.flag;
}}
生產者消費者問題
public class producer consumer class godown public godown int num public synchronized void produce int n catch interruptedexception e curr num n syste...
生產者 消費者問題
在學習程序互斥中,有個著名的問題 生產者 消費者問題。這個問題是乙個標準的 著名的同時性程式設計問題的集合 乙個有限緩衝區和兩類執行緒,它們是生產者和消費者,生產者把產品放入緩衝區,相反消費者便是從緩衝區中拿走產品。生產者在緩衝區滿時必須等待,直到緩衝區有空間才繼續生產。消費者在緩衝區空時必 須等待...
生產者 消費者問題
1 程序互斥問題 緩衝區b是臨界資源,程序p和c不能同時對b進行操作,即只能互斥的操作 2 程序同步問題 p不能往 滿 的的緩衝區b放產品,c不能從空的緩衝區獲得產品。當緩衝區滿時,c必須先於p執行,當緩衝區空時,p必須先於c執行 我們給出如下基於記錄型 二元 訊號量機制的解法 10 9 2013 ...