201709018工作日記--線程狀態的轉換

來源:互聯網
上載者:User

標籤:it168   html   art   family   com   size   join()   請求   style   

先來張圖:

  線程在一定條件下,狀態會發生變化:

  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()方法,該線程結束生命週期。

 

  一些小小的總結:

  1、線程的實現有兩種方式,一是繼承Thread類,二是實現Runnable介面,但不管怎樣,當我們new了這個對象後,線程就進入了初始狀態;
 2、當該對象調用了start()方法,就進入可運行狀態; 
  3、進入可運行狀態後,當該對象被作業系統選中,獲得CPU時間片就會進入運行狀態; 
  4、進入運行狀態後情況就比較複雜了 
    4.1、run()方法或main()方法結束後,線程就進入終止狀態; 
    4.2、當線程調用了自身的sleep()方法或其他線程的join()方法,就會進入阻塞狀態(該狀態既停止當前線程,但並不釋放所佔有的資源)。當sleep()結束或join()結束後,該線程進入可運行狀態,繼續等待OS分配時間片; 
    4.3、線程調用了yield()方法,意思是放棄當前獲得的CPU時間片,回到可運行狀態,這時與其他進程處於同等競爭狀態,OS有可能會接著又讓這個進程進入運行狀態; 
   4.4、當線程剛進入可運行狀態(注意,還沒運行),發現將要調用的資源被synchroniza(同步),擷取不到鎖標記,將會立即進入鎖池狀態,等待擷取鎖標記(這時的鎖池裡也許已經有了其他線程在等待擷取鎖標記,這時它們處於隊列狀態,既先到先得),一旦線程獲得鎖標記後,就轉入可運行狀態,等待OS分配CPU時間片; 
   4.5、當線程調用wait()方法後會進入等待隊列(進入這個狀態會釋放所佔有的所有資源,與阻塞狀態不同),進入這個狀態後,是不能自動喚醒的,必須依靠其他線程調用notify()或notifyAll()方法才能被喚醒(由於notify()只是喚醒一個線程,但我們由不能確定具體喚醒的是哪一個線程,也許我們需要喚醒的線程不能夠被喚醒,因此在實際使用時,一般都用notifyAll()方法,喚醒有所線程),線程被喚醒後會進入鎖池,等待擷取鎖標記。

 

201709018工作日記--線程狀態的轉換

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.