併發程式設計喚醒判斷用while
為什麼判定用while不用if
用if可能會導致 不應該喚醒的時候程式繼續執行如notifyAll喚醒所有程式 但是當前方法的條件不滿足喚醒條件還繼續向下執行
- 部分程式碼 完整程式碼參考:碼雲
public void demo() {
synchronized (this) {
this.notifyAll();
}
}
public synchronized boolean put(E e) throws InterruptedException {
checkNotNull(e);
try {
/**
* 為什麼用while不用if 在多執行緒等待判斷中要用while進行判斷
*
*/
while (count == items.length)
this.wait();
items[putIndex] = e;
if (++putIndex == items.length)
putIndex = 0;
count++;
this.notifyAll();
return true;
} finally {
}
}
相關文章
- Java 併發程式設計:如何防止線上程阻塞與喚醒時死鎖Java程式設計
- 用超程式設計來判斷STL型別程式設計型別
- Java併發程式設計之美-千無萬喚使出來Java程式設計
- java面試-Java併發程式設計(五)——中斷Java面試程式設計
- Java併發程式設計的藝術(五)——中斷Java程式設計
- 併發程式設計 —— 談談執行緒中斷程式設計執行緒
- shell程式設計(五)條件判斷程式設計
- 虛假喚醒
- 併發程式設計程式設計
- 【Java併發程式設計】併發程式設計大合集-值得收藏Java程式設計
- 使用WakeLock使Android應用程式保持後臺喚醒Android
- PTA 程式設計 判斷題-期末複習程式設計
- 如何判斷程式設計師在做什麼?程式設計師
- 不要將Actors用於併發程式設計程式設計
- 大神教你設定Linux程式的睡眠和喚醒Linux
- win10 休眠滑鼠喚醒怎麼設定_win10滑鼠休眠怎麼喚醒Win10
- Go 併發程式設計 - 併發安全(二)Go程式設計
- Golang 併發程式設計Golang程式設計
- 併發程式設計(四)程式設計
- 併發程式設計(二)程式設計
- java 併發程式設計Java程式設計
- 併發程式設計13程式設計
- golang併發程式設計Golang程式設計
- Java併發程式設計Java程式設計
- Go 併發程式設計Go程式設計
- shell併發程式設計程式設計
- Scala併發程式設計程式設計
- 併發程式設計 synchronized程式設計synchronized
- .NET 網路喚醒
- 用 Python 指令碼實現電腦喚醒後自動拍照 截圖併發郵件通知Python指令碼
- shell程式設計中的控制判斷語句程式設計
- 併發程式設計和並行程式設計程式設計並行行程
- Java併發程式設計-鎖及併發容器Java程式設計
- 併發程式設計之:JUC併發控制工具程式設計
- Java併發系列—併發程式設計挑戰Java程式設計
- 【Java併發程式設計】一、為什麼需要學習併發程式設計?Java程式設計
- Java併發程式設計 - 第十一章 Java併發程式設計實踐Java程式設計
- Go語言程式設計有哪些利與弊?程式設計時如何判斷是否應該用Go?Go程式設計