生產者 消費者問題

2021-10-10 21:34:09 字數 1975 閱讀 2720

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 ...