已采納回答 / 黃子衣
解釋:當線程1將piao()方法調入棧中執行時,線程2也將piao()方法調入棧中執行,但是由于piao()方法被鎖所以線程2處于等待,然而此時線程2已經讀取了內存中的 x 的值,所以當線程1執行完成雖然修改了 x 的值,但是由于線程2已經讀取了 x 的值,所以修改后的 x 的值并沒有被線程2讀取。注意:1、可以給x添加volatile修飾符,這樣線程就能讀取正確的值? ? ? ? ? 2、一般情況下對于并發共享的類最好不要擁有狀態,容易出現并發問題
2017-06-14
最贊回答 / 慕婉清0689395
因為ArmyRunable類繼承了runnable接口,而且thread中有一個構造方法可以通過runnable對象去實例化一個thread對象,所以我們可以用ArmyRunnable類去進行父類引用子類對象去實例化一個runnable對象,最后得到thread對象當然可以調用Thread.CurrentThread 方法和yield() 方法啊。
2017-06-08
已采納回答 / 慕婉清0689395
因為子類重寫了父類的run方法,父類對象不能調用子類的重寫的run方法;也可以通過父類對象去引用子類對象去實現調用子類的run方法Thread actor = new Threadx();
2017-05-12
已采納回答 / Mad_Man_
wait()方法是讓線程釋放對象鎖,讓其他線程拿到鎖之后去優先執行,當其他全程喚醒wait()中的線程 或者 拿到對象鎖的線程都執行完釋放了對象鎖之后,wait()中的線程才會再次拿到對象鎖從而執行。
2017-05-10