① 基於java 線程的幾種狀態
下面是java 線程的5種狀態:
1、新建(new)
新建一個線程的對象。
2、可運行(runable)
線程對象創建後,其他線程調用該線程的start方法。或者該線程位於可運行線程池中等待被線程調用,已獲取cpu的使用權。
3、運行(running)
可運行的線程獲取了cpu的使用權,執行程序代碼
4、阻塞(block)
由於某些原因該線程放棄了cpu的使用權。停止執行。除非線程進入可運行的狀態,才會有機會獲取cpu的使用權。
(1)等待阻塞:運行中的線程執行wait方法,這時候該線程會被放入等待隊列。
(2)同步阻塞:運行中的線程獲取同步鎖,如果該同步鎖被別的線程佔用,這個線程會成被放入鎖池,等待其他線程釋放同步鎖。
(3)其他阻塞:運行的線程執行sleep或者join方法這個線程會成為阻塞狀態。當sleep超時,join等待線程終止,該線程會進入可運行狀態。
5、死亡(dead)
線程run mian 執行完畢後,或者因為某些異常產生退出了 run 方法,該線程的生命周期結束。
② Java中線程的幾種可用狀態有哪些請大家解釋一下。
線程在執行過程中,可以處於下面幾種狀態:
1、就緒(Runnable):線程准備運行,不一定立馬就能開始執行。
2、運行中(Running):進程正在執行線程的代碼。
3、等待中(Waiting):線程處於阻塞的狀態,等待外部的處理結束。
4、睡眠中(Sleeping):線程被強制睡眠。
5、I/O阻塞(BlockedonI/O):等待I/O操作完成。
6、同步阻塞(BlockedonSynchronization):等待獲取鎖。
7、死亡(Dead):線程完成了執行。