概括的解釋下線程的幾種可用狀態。


1、新建(new):新建一個線程對象。

2、可運行狀態(runnable):線程對象創建后,其他線程調用該對象的start()方法,該狀態的線程位於可運行線程池中,等待線程調度選中,獲取CPU使用權。

3、運行狀態(running):可運行狀態的線程獲取到了cpu時間片(timeslice),執行程序代碼。

4、阻塞(block):運行狀態的線程因為某些原因放棄了CPU的使用權,也即讓出了cpu timeslice,暫時停止運行。直到線程進入可運行狀態,才有機會再次獲得cpu timeslice轉到運行狀態。阻塞的情況分為三種:

(一)等待阻塞:運行狀態的線程對象執行了wait()方法,JVM會把該線程放入等待隊列(waitting queue)中。

(二)同步阻塞:運行狀態的線程對象要獲取同步鎖時,若該同步鎖被別的線程占用,則JVM就會把該線程放入鎖池(lock pool)中。

(三)其他阻塞:運行狀態的線程對象調用了sleep()、join()方法或者發出了I/O請求時,JVM會把該線程置為阻塞狀態。當sleep()狀態超時、join()等待線程終止或者超時、I/O處理完畢時,線程轉入可運行狀態。

5、死亡(dead):線程run()、main()方法執行結束,或者因異常退出了run()方法,則該線程結束生命周期。死亡的線程不可復生。


免責聲明!

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



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