多執行緒經典問題2 子執行緒之間交替問題

2021-09-07 14:15:04 字數 931 閱讀 7208

編寫乙個程式。開啟3個執行緒,這3個執行緒的id分別為a、b、c,每乙個執行緒將自己的id在螢幕上列印10遍,要求輸出結果必須按abc的順序顯示;如:abcabc….依次遞推。

詳細**例如以下:

package treadgame;

/** * 執行緒間的交流1

* 編寫乙個程式,開啟3個執行緒,這3個執行緒的id分別為a、b、c,

* 每乙個執行緒將自己的id在螢幕上列印10遍,

* 要求輸出結果必須按abc的順序顯示;如:abcabc….依次遞推。

* @author lcx

* */

public class threadexchange2

}class resource2

catch (interruptedexception e)

}system.out.print(tag);

index=(index+1)%3;

notifyall();

} }}class subs implements runnable

public void run()

}

必需要注意的是

while(tag-'a'!=index)
不能寫成
if(tag-'a'!=index)
否則會出現錯誤,由於notifyall會喚醒剩下的兩個執行緒。當中僅僅能有乙個是正確的、需要執行的執行緒
追問:之前說的子執行緒與主線程交替執行,為什麼就能夠在使用if來推斷是否wait?
由於假設本執行緒不是須要執行的執行緒。那麼另外乙個執行緒絕對是須要執行的執行緒,所以乙個if即可。

多執行緒經典問題2 子執行緒之間交替問題

編寫乙個程式,開啟3個執行緒,這3個執行緒的id分別為a b c,每個執行緒將自己的id在螢幕上列印10遍,要求輸出結果必須按abc的順序顯示 如 abcabc 依次遞推。具體 如下 package treadgame 執行緒間的交流1 編寫乙個程式,開啟3個執行緒,這3個執行緒的id分別為a b ...

多執行緒經典問題1 主線程子執行緒交替問題

提出問題 子執行緒迴圈 10 次,接著主線程迴圈 100 次,接著又回到子執行緒迴圈 10 次,接著再回到主線程又迴圈 100 次。如此迴圈50次。分析 這個實際上是非常easy的問題。即子執行緒run,主線程堵塞 子執行緒堵塞,主線程run 可以使執行緒堵塞的方法有非常多,最常見的是sleep與w...

java多執行緒問題,執行緒交替執行

兩個執行緒,乙個列印1 100的奇數,乙個列印1 100的偶數 要求 執行緒1列印5個之後,執行緒2開始列印,執行緒2列印5個之後,執行緒1再開始列印,以此迴圈。package threadtest public class test1 catch interruptedexception e 當s...