執行緒的幾個狀態,及若干名詞解釋
1、新建狀態(New):新建立了一個執行緒物件。
2、就緒狀態(Runnable):執行緒物件建立後,其他執行緒呼叫了該物件的start()方法。該狀態的執行緒位於可執行執行緒池中,變得可執行,等待獲取CPU的使用權。
3、執行狀態(Running):就緒狀態的執行緒獲取了CPU,執行程式程式碼。
4、阻塞狀態(Blocked):阻塞狀態是執行緒因為某種原因放棄CPU使用權,暫時停止執行。直到執行緒進入就緒狀態,才有機會轉到執行狀態。
阻塞的情況分三種:
(一)、等待阻塞:執行的執行緒執行wait()方法,JVM會把該執行緒放入等待池中。
(二)、同步阻塞:執行的執行緒在獲取物件的同步鎖時,若該同步鎖被別的執行緒佔用,則JVM會把該執行緒放入鎖池中。
(三)、其他阻塞:執行的執行緒執行sleep()或join()方法,或者發出了I/O請求時,JVM會把該執行緒置為阻塞狀態。當sleep()狀態超時、join()等待執行緒終止或者超時、或者I/O處理完畢時,執行緒重新轉入就緒狀態。
5、死亡狀態(Dead):執行緒執行完了或者因異常退出了run()方法,該執行緒結束生命週期。
執行緒阻塞,可以這樣說,只要執行緒沒有被cpu執行,就可以稱為阻塞。有的阻塞可以自動恢復,有的則需要呼叫方法解除阻塞。
7、常見執行緒名詞解釋
主執行緒:JVM呼叫程式mian()所產生的執行緒。
當前執行緒:這個是容易混淆的概念。一般指通過Thread.currentThread()來獲取的程式。
後臺執行緒:指為其他執行緒提供服務的執行緒,也稱為守護執行緒。JVM的垃圾回收執行緒就是一個後臺執行緒。
前臺執行緒:是指接受後臺執行緒服務的執行緒,其實前臺後臺執行緒是聯絡在一起,就像傀儡和幕後操縱者一樣的關係。傀儡是前臺執行緒、幕後操縱者是後臺執行緒。由前臺執行緒建立的執行緒預設也是前臺執行緒。
可以通過isDaemon()和setDaemon()方法來判斷和設定一個執行緒是否為後臺執行緒。
14、同步方法和同步程式碼塊的區別是什麼?
在Java語言中,每一個物件有一把鎖。執行緒可以使用synchronized關鍵字來獲取物件上的鎖。synchronized關鍵字可應用在方法級別(粗粒度鎖)或者是程式碼塊級別(細粒度鎖)。
15.在監視器(Monitor)內部,是如何做執行緒同步的?程式應該做哪種級別的同步?
監視器和鎖在Java虛擬機器中是一塊使用的。監視器監視一塊同步程式碼塊,確保一次只有一個執行緒執行同步程式碼塊。每一個監視器都和一個物件引用相關聯。執行緒在獲取鎖之前不允許執行同步程式碼。
16.什麼是死鎖(deadlock)?
兩個程式都在等待對方執行完畢才能繼續往下執行的時候就發生了死鎖。結果就是兩個程式都陷入了無限的等待中。
17.如何確保N個執行緒可以訪問N個資源同時又不導致死鎖?
使用多執行緒的時候,一種非常簡單的避免死鎖的方式就是:指定獲取鎖的順序,並強制執行緒按照指定的順序獲取鎖。因此,如果所有的執行緒都是以同樣的順序加鎖和釋放鎖,就不會出現死鎖了。
相關文章
- 執行緒的幾種狀態執行緒
- JAVA 執行緒的幾種狀態Java執行緒
- 執行緒池的五種狀態及建立執行緒池的幾種方式執行緒
- 執行緒的幾種狀態總結執行緒
- 多執行緒的執行緒狀態及相關操作執行緒
- 對超執行緒幾個不同角度的解釋執行緒
- Java執行緒狀態及切換Java執行緒
- Java執行緒狀態及同步鎖Java執行緒
- MySQL執行緒狀態詳解MySql執行緒
- 執行緒6--執行緒的狀態執行緒
- 執行緒狀態執行緒
- Java多執行緒-執行緒狀態Java執行緒
- JAVA 執行緒狀態及轉化(轉)Java執行緒
- Java執行緒的狀態Java執行緒
- java執行緒棧狀態詳解Java執行緒
- 多執行緒-執行緒的狀態轉換圖及常見執行情況執行緒
- java執行緒的五大狀態,阻塞狀態詳解Java執行緒
- 一起分析執行緒的狀態及執行緒通訊機制執行緒
- 玩轉java多執行緒 之多執行緒基礎 執行緒狀態 及執行緒停止實戰Java執行緒
- Java執行緒池中執行緒的狀態簡介Java執行緒
- 透徹講解,Java執行緒的6種狀態及切換Java執行緒
- Java的六種執行緒狀態及程式碼示例Java執行緒
- 執行緒狀態和鎖執行緒
- 執行緒各種狀態執行緒
- 淺談 Java執行緒狀態轉換及控制Java執行緒
- 詳解Java執行緒池的ctl(執行緒池控制狀態)【原始碼分析】Java執行緒原始碼
- 併發程式設計基礎——執行緒狀態,啟動及停止的幾種方式程式設計執行緒
- ThreadPollExcutor執行緒池的狀態thread執行緒
- Java 執行緒的5種狀態Java執行緒
- 【Java】執行緒的 6 種狀態Java執行緒
- java執行緒的狀態+鎖分析Java執行緒
- 執行緒的五大狀態執行緒
- Java執行緒狀態轉換Java執行緒
- java--執行緒狀態【轉】Java執行緒
- Mysql複製執行緒狀態MySql執行緒
- Memcached 多執行緒和狀態機執行緒
- jstack判斷執行緒狀態JS執行緒
- 執行緒的6種狀態以及轉變執行緒