wait()讓執行緒堵塞;
notifyall()通知執行緒接觸堵塞
mq 的思想,
列: 生產者生產,消費者消費,通過緩衝區
生產者生產100個摸頭,消費者買饅頭。 消費者從緩衝區取饅頭,如果饅頭已賣完,就進入等待,等生產者做饅頭,放到容器裡,再通知消費者取饅頭,如果生產者已經再容器裡生產100個 則 進入等待,直到有消費者消費饅頭,然後通知生產者解除等待
/**
* 協作模型:生產者消費者實現方式一:管程法
* 借助緩衝區
* * @author
* */
public class cotest01
}//生產者
class productor extends thread
public void run()
}}//消費者
class consumer extends thread
public void run()
}}//緩衝區
class syncontainer catch (interruptedexception e)
}//存在空間 可以生產
buns[count] = bun;
count++;
//存在資料了,可以通知消費了
this.notifyall();
}//獲取 消費
public synchronized steamedbun pop() catch (interruptedexception e)
}//存在資料可以消費
count --;
steamedbun bun = buns[count] ;
this.notifyall(); //存在空間了,可以喚醒對方生產了
return bun;
}}//饅頭
class steamedbun
}
多執行緒 23 併發協作 管程法
併發協作模型生產者消費者模式的第一種管程法,它的核心要點是加了緩衝區,有了緩衝區之後,生產者和消費者之間解耦了,比如超市的中間商,生產者向中間商發商品,超市向中間商進商品,而生產者並不知道商品買給誰了。分析這個模型有幾個角色 第乙個角色生產者,第二個角色消費者,它們兩個是多執行緒,第三個是併發容器也...
多執行緒(管程法)
管程法 什麼是管程法?就是併發協作模型 生產者 消費者模式 實現方式的一種。思想 1.首先需要四個角色 1.生產者2.消費者3.緩衝區4.饅頭 2.生產者生產饅頭放到緩衝區,緩衝區如果滿了,生產者停止運作,進入等待 3.消費者從緩衝區拿饅頭,如果緩衝區饅頭沒有了,先喚醒生產者,然後進入等待 協作模型...
執行緒通訊 管程法
public class testpc 生產者 class productor extends thread 生產 override public void run 消費者 class coustomer extends thread 消費 override public void run 產品 c...