91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java 多線程的幾種實現方法總結

發布時間:2020-09-05 15:54:13 來源:腳本之家 閱讀:166 作者:csguo007 欄目:編程語言

java 多線程的幾種實現方法總結

1.多線程有幾種實現方法?同步有幾種實現方法?

多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口

同步的實現方面有兩種,分別是synchronized,wait與notify

wait():使一個線程處于等待狀態,并且釋放所持有的對象的lock。
sleep():使一個正在運行的線程處于睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。
notify():喚醒一個處于等待狀態的線程,注意的是在調用此方法的時候,并不能確切的喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先級。

Allnotity():喚醒所有處入等待狀態的線程,注意并不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。 

2、啟動一個線程是用run()還是start()? .

啟動一個線程是調用start()方法,使線程就緒狀態,以后可以被調度為運行狀態,一個線程必須關聯一些具體的執行代碼,run()方法是該線程所關聯的執行代碼。 

3、當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?

分幾種情況:

     1.其他方法前是否加了synchronized關鍵字,如果沒加,則能。
     2.如果這個方法內部調用了wait,則可以進入其他synchronized方法。
     3.如果其他個方法都加了synchronized關鍵字,并且內部沒有調用wait,則不能。
     4.如果其他方法是static,它用的同步鎖是當前類的字節碼,與非靜態的方法不能同步,因為非靜態的方法用的是this。 

4、線程的基本概念、線程的基本狀態以及狀態之間的關系

一個程序中可以有多條執行線索同時執行,一個線程就是程序中的一條執行線索,每個線程上都關聯有要執行的代碼,即可以有多段程序代碼同時運行,每個程序至少都有一個線程,即main方法執行的那個線程。如果只是一個cpu,它怎么能夠同時執行多段程序呢?這是從宏觀上來看的,cpu一會執行a線索,一會執行b線索,切換時間很快,給人的感覺是a,b在同時執行,好比大家在同一個辦公室上網,只有一條鏈接到外部網線,其實,這條網線一會為a傳數據,一會為b傳數據,由于切換時間很短暫,所以,大家感覺都在同時上網。 

  狀態:就緒,運行,synchronize阻塞,wait和sleep掛起,結束。wait必須在synchronized內部調用。

  調用線程的start方法后線程進入就緒狀態,線程調度系統將就緒狀態的線程轉為運行狀態,遇到synchronized語句時,由運行狀態轉為阻塞,當synchronized獲得鎖后,由阻塞轉為運行,在這種情況可以調用wait方法轉為掛起狀態,當線程關聯的代碼執行完后,線程變為結束狀態。

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肇东市| 高安市| 广安市| 察哈| 兴文县| 高邮市| 永靖县| 铅山县| 苏尼特左旗| 增城市| 图木舒克市| 邹城市| 读书| 鄂托克前旗| 海南省| 蒲江县| 景洪市| 彩票| 合水县| 曲麻莱县| 彭阳县| 旅游| 会理县| 凭祥市| 张家界市| 垦利县| 平定县| 隆林| 晋宁县| 太康县| 吉林市| 黄陵县| 大英县| 报价| 湘阴县| 邯郸县| 榆中县| 宁国市| 沾益县| 苗栗市| 讷河市|