示例**
額外了解:使用 位運算 判斷奇偶數
/**
* 描述: 兩個執行緒交替列印0~100的奇偶數,用synchronized關鍵字實現
*/public
class
waitnotifyprintoddevensyn}}
}},"偶數").
start()
;new
thread
(new
runnable()
}}}}
,"奇數").
start()
;}}
缺點分析:
程式內部執行過程並不是平等輪流得到鎖,是不公平的,實際上可能某個執行緒長時間擁有鎖而有效的操作卻只有一次,這樣就會造成資源的浪費。
示例**
/**
* 描述: 兩個執行緒交替列印0~100的奇偶數,用wait和notify
*/public
class
waitnotifyprintoddevewait
//1. 拿到鎖,我們就列印
//2. 列印完,喚醒其他執行緒,自己就休眠
static
class
turningrunner
implements
runnable
catch
(interruptedexception e)}}
}}}}
優點分析:
使得每一步都有意義,避免了某個執行緒拿到鎖時卻不做操作造成浪費。
兩個執行緒交替列印0 100的即偶數
兩個執行緒交替列印0 100的寄偶數,用wait和notify public class waitnotifyprintoddevenwait 1.拿到鎖,我們就列印 2。一旦列印完喚醒其他執行緒就休眠 static class turningrunner implements runnable c...
多執行緒之兩個執行緒交替列印的問題分析
場景一 在我們面試中經常會有這麼乙個場景,就是我們用執行緒a輸出 a 字元,有執行緒b輸出 b 字元,交替進行,要求a執行緒執行完任務輸出 a執行緒列印完了 b執行緒執行完任務輸入 b執行緒列印完了 最後有主線程輸出一句話 我列印完了 當你看到這個場景時,有點多執行緒經驗的人肯定會感覺很容易,然後有...
兩個執行緒交替列印數字 Condition喚醒與等待
b 看到一道關於多執行緒題 如何實現兩個執行緒交替列印數字0 9?b 首先我們會想到要實現交替列印,那麼就要其中乙個執行的時候,另外乙個處於等待狀態,當該執行緒執行完的時候,喚醒另外乙個。如此執行就可實現。我們可以通過wait和notify對執行緒進行狀態控制,並且我們需要兩個監視器分別對這兩個執行...