編寫乙個程式。開啟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...