題目是:
建立三個執行緒,a執行緒列印10次a,b執行緒列印10次b,c執行緒列印10次c,要求執行緒同時執行,交替列印10次abc
**實現是:
public class printrunnable implements runnable
@override
public void run()
try catch (interruptedexception e)
}} }
}
測試**是:
public class maintest
}
測試結果:
abcabcabcabcabcabcabcabcabcabc
分析:首先啟動第乙個執行緒,列印乙個a,喚醒a鎖,count--,(c.wait():釋放c鎖,第乙個執行緒在迴圈中等待)。
其次啟動第二個執行緒,列印乙個b,喚醒b鎖,count--,(a.wait():釋放a鎖,第二個執行緒在迴圈中等待)。
最後啟動第三個執行緒,列印乙個c,喚醒c鎖,count--,(b.wait():釋放b鎖,第三個執行緒在迴圈中等待)。
由於第三個執行緒在迴圈中喚醒c鎖,其執行完之後,會喚醒持有c鎖等待的第乙個執行緒,然後第乙個執行緒執行完之後再喚醒迴圈中持有b鎖的第二個執行緒,同理,依次執行喚醒操作。
多執行緒實現輪詢列印資料
如圖 要列印數字1 100,讓三個執行緒列印,實現 public class printdemo public void setnum int num public intgetindex public void setindex int index static class waits exten...
多執行緒列印問題
最近面試遇到乙個多執行緒的題目,對方要求用多個執行緒列印abcabc 每個執行緒負責列印其中乙個字母。迴圈10次吧!public class test thread threads newthread 3 for int i 0 i threads.length i 列印執行緒 class prin...
JAVA多執行緒列印ABC
多執行緒中乙個很有名的例題就是多執行緒列印 abc,要求用三個執行緒,分別是列印 a,列印 b,列印 c,輪流喚醒和鎖死,最終列印出10組 abc。created by 123 on 2016 8 30.public class printabc 將列印a,列印b,列印c分別列為三個互斥的方法,寫在...