執行緒協作和通訊問題 生產者和消費者問題

2021-10-11 06:02:33 字數 1902 閱讀 5787

解決辦法一:管程法:設定緩衝區

package gcf;

//生產者,消費者,產品,緩衝區

public

class

testgcf

}//生產者

class

productor

extends

thread

@override

public

void

run()}

}//消費者

class

cumextends

thread

@override

public

void

run()}

}//產品

class

chickent

}//緩衝區

class

hccatch

(interruptedexception e)

}//緩衝區沒滿

chickents[count]

=chickent;

count++

;//通知消費者消費

this

.notifyall()

;}//消費者消費

public

synchronized chickent pop()

catch

(interruptedexception e)

}//如果緩衝區有產品就消費

count--

; chickent chickent = chickents[count]

;this

.notifyall()

;return chickent;

}}

解決辦法二:**訊號燈法:**設定標誌位

package xhd;

//訊號燈法 標誌位解決 t f

//看電視 觀眾 演員 電視

public

class

xhd}

//演員

class

actor

extends

thread

@override

public

void

run(

)else}}

}//觀眾

class

person

extends

thread

@override

public

void

run()}

}//電視

class

tvcatch

(interruptedexception e)

}//什麼時候表演

system.out.

println

("演員正在表演"

+viose)

;//通知觀眾**

this

.notifyall()

;this

.viose=viose;

this

.flag=

!this

.flag;

}//觀眾**

public

synchronized

void

watch()

catch

(interruptedexception e)

} system.out.

println

("觀眾**了"

+viose)

;this

.notifyall()

;this

.flag=

!this

.flag;

}}

執行緒協作 生產者消費者問題

執行緒同步問題,生產者和消費者共享同乙個資源,並且生產者和消費者之間相互依賴,互為條件。分析 生產者 沒有生產產品之前,要通知消費者等待,生產產品之後,需要通知消費者消費 消費者 在消費完之後,要通知生產者消費結束,需要生產新的產品,以供消費。在這個問題中,只是用synchronized遠遠不夠,因...

多執行緒通訊(生產者,消費者問題)

理解多執行緒通訊,就是要用多執行緒需要有乙個共同的共享資源,通過該共享資源完成執行緒的通訊。例項 工廠 消費者 產品 工廠生產產品,消費者消費產品,產品就成了兩者之間的共享資源 產品的成員屬性 產品名,產品 是否需要生產的標識 public class goods public void setna...

執行緒通訊問題 生產者 消費者模式

解決執行緒之間通訊問題的方法 解決方法1 併發協作模型 生產者 消費者模式 管程法 測試 生產者 消費者模式 利用緩衝區解決 管程法 生產者 消費者 產品 緩衝區 public class testpc 生產者 class producftor extends thread 生產 override ...