【Java面試題】26 多線程有幾種實現方法?同步有幾種實現方法? 當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?


問題一:多線程有幾種實現方法?同步有幾種實現方法?
多線程有兩種實現方法,分別是 繼承Thread類實現Runnable接口
 
同步的實現方面有兩種,分別是synchronized,wait與notify
 
wait():使一個線程處於等待狀態,並且釋放所持有的對象的lock。
sleep():使一個正在運行的線程處於睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。
notify():喚醒一個處於等待狀態的線程,注意的是在調用此方法的時候,並 不能確切的喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先級。
Allnotity():喚醒所有處入等待狀態的線程,注意並不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。
 
問題二:啟動一個線程是用run()還是start()? 
注意:啟動一個線程是調用start()方法,使線程就緒狀態,以后可以被調度為運行狀態,一個線程必須關聯一些具體的執行代碼,run()方法是該線程所關聯的執行代碼。
 

問題三:當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?

   不能,一個對象的一個synchronized方法只能由一個線程訪問。 

對象的synchronized方法不能進入了,但它的其他非synchronized方法還是可以訪問的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM