6.21Java多執行緒併發管程法
阿新 • • 發佈:2021-06-21
核心:
緩衝區
模型分析
-
生產者--->多執行緒(有多個操作)
-
消費者--->多執行緒
-
緩衝區--->併發容器(JUC包下已經提供了)--->操作商品
功能
-
緩衝區需要實現什麼功能
-
需要併發什麼操作
-
併發存--->什麼時候可以存(容器不夠時,需要等待)
-
併發取--->什麼時候可以取(裡面有資料,就可以取。空容器,進行等待。等待生產)
-
wait同樣是阻塞的一種,但是會釋放鎖。
當notify或者notifyAll被呼叫的時候執行緒就進入了可執行狀態
有資源的鎖定和陣列越界問題
package iostudy.threadcooperation;
import java.util.stream.Stream;
/**
* 協作模型:生產者---消費者方式一:
* 管程法
* @since JDK 1.8
* @date 2021/6/21
* @author Lucifer
*/
public class CoTestNo1 {
public static void main(String[] args) {
/*先建立緩衝區*/
SynContainer container = new SynContainer();
/*生產者*/
new Productor(container).start();
/*消費者*/
new Consumer(container).start();
}
}
/**
* 多執行緒生產者
*/
class Productor extends Thread{
/*對緩衝區進行操作*/
SynContainer container;
/*新增構造器*/
public Productor(SynContainer container){
super();
this.container = container;
}
/*重寫run方法*/