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


 

基本概念:在程序執行過程中,能夠執行程序代碼的一個執行單位,每個程序至少都有一個線程,也就是程序本身。

六個基本狀態:new,runnable,waiting,timed waiting,blocked和 terminated。

wait方法必須在synchronized內部調用。

l 新建new新創建一個線程對象。

l 可運行runnable:線程對象創建后,其它線程(比如main線程)調用了該對象的start()方法。該狀態的線程位於可運行線程池中,等待被線程調度選中,獲取cpu的使用權。

l 阻塞blocked阻塞狀態是指線程因為某種原因放棄了cpu使用權,也即讓出了cpu time slice,暫時停止運行。直到線程進入可運行狀態,才有機會再次獲得cpu timeslice轉到運行狀態。阻塞的情況分三種:

(一) 等待阻塞:running線程執行wait()方法,JVM會把該線程放入等待隊列(waitting queue)中。

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

(三) 其它阻塞: running線程執行Thread.sleep(long ms)或t.join()方法,或者發出了I/O請求時,JVM會把該線程置為阻塞狀態。當sleep()狀態超時join()等待線程終止或者超時、或者I/O處理完畢時,線程重新轉入可運行狀態。

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


免責聲明!

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



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