已采納回答 / 慕粉2118219580
其實stage線程和軍隊線程之間是沒有關系的,只是stage線程讓軍隊線程開始執行而已。一個線程可以理解為一段代碼,線程相互之間沒有關系,除非對公共資源進行讀取或修改
2017-08-03
已采納回答 / 予別她
你這個方法沒有定義返回值,然后if條件語句里面那個return不能跳出循環,輸出演出結束那句話永遠也到不了,所以程序會報錯,可以把return改成break就好了
2017-08-03
最贊回答 / Andyanet
Thread.Join把指定的線程加入到當前線程,可以將兩個交替執行的線程合并為順序執行的線程。比如在線程B中調用了線程A的Join()方法,直到線程A執行完畢后,才會繼續執行線程B。
2017-07-30
最贊回答 / 世上無難事_只要肯放棄
這樣?wait一般等什么東西的時候就要跟for如果是“在..等”就用“at,in”等介詞大的地方時in小地方at 比如:在校門口等 wait at the school gate
2017-07-26
已采納回答 / FarFromAnyRoad
兩個軍隊的線程都停止。舞臺并沒有停止join()應該就是阻塞(這個不結束,不繼續運行),你不阻塞,線程程咬金還在運行,調用線程的舞臺就結束了
2017-07-20
已采納回答 / 蒂谷
估計你是想問農民軍和隋軍的線程運行了多久,這個的話就貌似跟舞臺線程的休眠時長有關。Thread.sleep(5)那里。休眠的越久,就戰斗的越久,執行到keepRunning = false的時間就越長。反之越短
2017-07-18
最贊回答 / 正方形企鵝
聲明:解釋轉自 sxian_wang 的回答先明白兩個概念:鎖池和等待池。synchronized是鎖池,wait、notify、notifyAll是等待池。等待池的對象是不會競爭鎖的,當notifyAll后,等待池中的線程會被喚醒進入到該線程的鎖池中重新競爭對象鎖,重新獲得鎖后的對象會從wait后繼續執行代碼,其他對象會被阻塞,而不是wait。被阻塞的對象會等待下一次被喚醒(notify、notifyAll)。另外,notify不是線程安全的,notifyAll才是。
2017-07-06
最贊回答 / 我夢寐以求是真愛與自由
Thread.sleep(50)的作用是讓stage()這個線程休眠五十毫秒,寫在Thread.sleep(50)后面的就是終止條件,表面來看整個邏輯確實很奇怪,因為你發現一整套下來線程跑的次數比你想象中的多的多。而真正讓線...
2017-07-04
最贊回答 / KingAmo
其他線程在他的start()方法執行后,并沒有立即獲得cpu時間,所以里面的run()方法沒有立即執行,等到stage線程讓出cpu時間后才會執行。但是你沒休眠,stage線程會執行到賦值keeprunning為false,stage線程這時讓出cpu時間,其他線程再試行,但已經不會打印輸出語句了。如果你有休眠,stage線程執行到休眠時就讓出了cpu時間,后面的給keeprunning賦值沒有執行,所以可以打印、
2017-07-03