日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 线程之线程状态

發布時間:2023/12/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 线程之线程状态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Thread?類中的線程狀態:

public enum State {NEW,//新建RUNNABLE,// 執行態BLOCKED, //等待鎖(在獲取鎖的池子里)WAITING,//等待狀態TIMED_WAITING,//定時等待TERMINATED; //終止 }

創建狀態(NEW):當一個線程創建以后,就處于創建狀態。Thread? ?th= new?Thread(()->{ });

等待鎖(BLOCKED):當線程調用 th.start()?方法,表明該線程具備獲取鎖的資格,進入等待鎖的池子中。

可運行狀態:當線程?th?獲取到鎖之后就進入該狀態(該狀態并不存在Thread?類中,但是操作系統是否執行線程,是根據是否分配時間片來決定的)。

執行態(RUNNABLE):當可運行態的線程?th?獲取到cpu的時間片以后就進入執行。

終止態(TERMINATED):線程執行完畢,或者出現異常。

阻塞狀態:在?Thread?源碼里沒有改狀態但是在《操作系統原理》中線程是存在該狀態的。阻塞態的線程是沒有釋放自己本身持有的鎖(例如線程運行時需要外部I/O資源,打印機、調用sleep()方法。)只是由于外部提出了干預,等外部事件執行完畢后,可直接進入可運行狀態。

等待狀態(WAITING): 一個處于運行狀態的線程還可能調用wait()方法、該方法會使調用的線程釋放對象鎖釋,所以線程將進入等待獲取鎖的隊列里面。join()?方法同理,join()方法底層使用的wait(),只不過Join()方法作用于當前執行的線程中。通過調用notify()或notifyAll()這兩個方法來喚醒線程然后進入鎖池狀態。進入鎖池狀態以后繼續參與鎖的競爭。

定時等待狀態(TIMED_WAITING):調用?帶參數的wait(long num)?方法。該方法等定時一到自動會喚醒線程然后進入鎖池狀態。進入鎖池狀態以后繼續參與鎖的競爭。

掛起狀態:當一個處于運行狀態的線程調用了suspend()方法以后,它就會進入掛起狀態(這一方法已經過時不建議使用)。掛起狀態的線程也沒有釋放對象鎖,它需要調用resume()方法以后才能恢復到可運行狀態。將線程掛起容易導致程序死鎖。

?

轉載于:https://www.cnblogs.com/jalja/p/11451981.html

總結

以上是生活随笔為你收集整理的java 线程之线程状态的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。