已采納回答 / 是王小二呀
第一:創建線程只有繼承Thread類和實現Runnable接口兩種方式(Thread也是實現了Runnable接口);第二:若以繼承Thread類方式創建線程則這個類的實例就可以重寫Thread類的幾十個方法,注意是好幾十個方法;第三:若以實現Runnable接口的方式創建線程則僅僅只有一個run()方法可供重寫;注意是只有一個;? ??實現Runnable接口創建的線程最終還是要通過將自身實例作為參數傳遞給Thread然后執行,當你要為一個沒有繼承Thread類的類創建線程,而且只想讓這個類的實例調用r...
2015-12-22
已采納回答 / 憊懶sloth
Thread.sleep();這個方式是使得當前在運行的線程休眠,作用就是讓 Stage休眠,如果單純的 Stage.sleep()是沒有這個方法的。
2015-12-18
已采納回答 / 喬小欠兒
Stage的run方法里有armyOfFarmer.join();這句。這句的意思是說農民的run方法執行完了才能往armyOfFarmer.join();這句代碼之后運行。但你看看你的ArmyRunnable的run方法里,while?(keepRunning)的keepRuning一直是true,...
2015-12-18
已采納回答 / sxian_wang
不會,主要是這樣的:先明白兩個概念:鎖池和等待池。synchronized是鎖池,wait、notify、notifyAll是等待池。等待池的對象是不會競爭鎖的,當notifyAll后,等待池中的線程會被喚醒進入到該線程的鎖池中重新競爭對象鎖,重新獲得鎖后的對象會從wait后繼續執行代碼,其他對象會被阻塞,而不是wait。被阻塞的對象會等待下一次被喚醒(notify、notifyAll)。另外,notify不是線程安全的,notifyAll才是。
2015-12-09
已采納回答 / sxian_wang
其實就是this.getName();這個類是Thread的成員函數,這個方法在Thread中已經實現了,所以在子類中可以直接調用。這兩種寫法沒有本質上的區別,都是指當前對象的xxxx。在實際開發中,加不加this,我沒有查到有一種確切結論,更多是個人習慣吧。不過貌似在訪問當前對象的屬性(變量)的時候一般多用this;而在對象內部調用非靜態方法時不用this,直接用函數名調用。
2015-11-30
已采納回答 / 風拔蘿卜
這個要分情況的。如果你是用的實現Runnable類的方式的話可以直接使用this,而如果是使用繼承Thread的方式時就不要使用this,因為此時this指向不同對象,這樣每個線程都擁有自己的鎖,無法實現同步
2015-11-27
已采納回答 / 轉變者
這里不一樣的呀!public class ActorCopy extends Threadclass Actress implements Runnable
2015-11-11
已采納回答 / 天啟之魂
如果使用if 那么判斷標記后,線程等待然后被喚醒 會直接執行下面的語句,但是可能這時條件是不成立的所以需要重新判斷條件 使用while就可以重復判斷標記
2015-10-28
已采納回答 / 天啟之魂
沒看到你別的代碼,也沒看這個題目,不知道具體問題, 但是就你出現的那個問題,notify是喚醒線程池中的任意一個線程,當你的讀和取都有多個線程時,有使用的同一個鎖,確實會造成死鎖,JDK1.5?java.util.concurrent.locks?包中提供了更方便的靈活的解決辦法 ? ?java.util.concurrent.locks包下 ? ?Lock接口:代替了同步代碼塊或者同步函數,將同步的隱式鎖操作變為了顯示操作,而已可以加上多個監視器,Condition接口中signal();喚醒鎖上指定監...
2015-10-11