[b]看到一道關於多執行緒題:如何實現兩個執行緒交替列印數字0-9?[/b]
首先我們會想到要實現交替列印,那麼就要其中乙個執行的時候,另外乙個處於等待狀態,當該執行緒執行完的時候,喚醒另外乙個。如此執行就可實現。
我們可以通過wait和notify對執行緒進行狀態控制,並且我們需要兩個監視器分別對這兩個執行緒的wait和notify控制。如果用synchronized的wait和notify,實現起來比較麻煩(只有wait在相同的鎖和監視器上的執行緒,才能被喚醒),因為對於同乙個鎖,我們需要不同的監視器進行控制wait和notify。這種情況下,condition可以比較好的支援.
[b]condition[/b]:能夠更加精細的控制多執行緒的等待與喚醒,並且對於同乙個鎖可以建立多個condition監視器。
**如下:
執行結果:
t1:0
t2:1
t1:2
t2:3
t1:4
t2:5
t1:6
t2:7
t1:8
t2:9
兩個執行緒交替列印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執行緒列印完了 最後有主線程輸出一句話 我列印完了 當你看到這個場景時,有點多執行緒經驗的人肯定會感覺很容易,然後有...
多執行緒技術 兩個執行緒交替列印奇數和偶數
1.要列印的資源 1 package com.mytest.thread 2 3 4 要列印的資源 5 6 7 public class num 2.列印奇數的執行緒 1 package com.mytest.thread 2 3 public class printodd implements r...