解決辦法一:管程法:設定緩衝區
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 ...