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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248178.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248178.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248178.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

目標元素拖動

<div class"box"><div class"title">拖拽效果</div></div>* {margin: 0;padding: 0;}.box {width: 350px;height: 300px;border: 1px solid #ccc;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);cursor…

操作系統原理之內存管理(第四章第二部分)

一、基本分頁存儲管理方式 1、分?存儲管理的基本原理&#xff1a; 頁&#xff1a;將?個進程的邏輯地址空間分成若?個??相等的?頁框&#xff1a;將物理內存空間分成與???相同的若?個存儲塊分?存儲&#xff1a;將進程中的若??分別裝?多個可以不相鄰的?框中頁內碎片…

C#代碼總結02---使用泛型來獲取Asp前臺頁面全部控件,并進行屬性修改

該方法&#xff1a;主要用于對前臺頁面的不同類型&#xff08;TextBox、DropDownList、等&#xff09;或全部控件進行批量操作&#xff0c;用于批量修改其屬性&#xff08;如&#xff0c;Text、Enable&#xff09;。 private void GetControlList<T>(ControlCollection c…

d3.js 教程 模仿echarts柱狀圖

由于最近工作不是很忙&#xff0c;隧由把之前的charts項目用d3.js重寫的一下&#xff0c;其實d3.js文檔很多&#xff0c;但是入門不是很難&#xff0c;可是想真的能做一個完成的&#xff0c;交互良好的圖還是要下一番功夫的。今天在echarts找到了一個柱狀圖&#xff0c;如圖。 …

簡單的動畫函數封裝(2)

<div></div><!-- <span></span> --><button class"btn1">點擊500</button><button class"btn2">點擊800</button>div{width: 100px;height: 100px;background-color: red;position: absolute;top: …

【蔡勒公式 】根據給定的年月日求出對應星期幾

蔡勒公式 蔡勒&#xff08;Zeller&#xff09;公式&#xff0c;是一個計算星期的公式&#xff0c;隨便給一個日期&#xff0c;就能用這個公式推算出是星期幾。時間復雜度&#xff1a;O(1)。具體的在紅書P229有。 若要計算的日期是在1582年10月4日或之前&#xff0c;公式則為&am…

MFC的程序,不想顯示窗口,任務欄里也不顯示

在dialog的oninitdialog里設置如下屬性&#xff0c;很簡單&#xff0c;網上一些亂七八糟的做法&#xff0c;一行代碼就能搞定啊 SetWindowPos(&CWnd::wndNoTopMost,0,0,0,0,SWP_HIDEWINDOW); ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW); 轉載于:https://www.cnblog…

放大鏡制作(2)—此方法比較容易理解

<div class"box" id"box"><!--左側的盒子--><div class"left_img"><!--圖片--><img src"images/small.jpg" class"aaa" alt"小圖片"/><!--黃色小盒子--><div class"…

call / apply / bind

對于 call / apply / bind 來說&#xff0c;他們的首要目的是用于改變執行上下文的 this 指針。 call / apply 對 call / apply 的使用&#xff0c;一般都如下&#xff0c;用于改變執行環境的上下文。只是 call 接受的是一個一個的參數&#xff0c;而 apply 則是接受的是一個參…

js(Dom+Bom)第八天—Swiper(插件)

Swiper插件(庫) 01-基本介紹 Swiper 是一款免費以及輕量級的移動設備觸控滑塊的js框架&#xff0c;使用硬件加速過渡&#xff08;如果該設備支持的話&#xff09;。主要使用于移動端的網站、移動web apps&#xff0c;native apps和hybrid apps。主要是為IOS而設計的&#xff…

第七節:EF Core調用SQL語句和存儲過程

一. 查詢類(FromSql) 1.說明 A. SQL查詢必須返回實體的所有屬性字段。 B. 結果集中的列名必須與屬性映射到的列名相匹配。 C. SQL查詢不能包含關聯數據 D. 除Select以為的其它SQL語句無法運行。 2.調用SQL語句的幾種情況 A. 基本的原生SQL查詢 B. 利用$內插語法進行傳遞 C. 原生…

沒用的一些水貨

1. 不遞歸的子函數加上inline會跑的很快。 2. 在稠密圖中用dijkstra堆優化會導致跑的很慢。 3. 連著開幾個數組的話&#xff0c;有可能越界了評測機卻返回WA。 4. 如果你用的Dev-C&#xff0c;那么有的時候會出現一些莫名其妙的編譯錯誤。請檢查是否存在未關閉的代碼生成的.exe…

js(Dom+Bom)第八天

JavaScript 移動端事件介紹 touch事件類型 移動設備上無法使用鼠標&#xff0c;當手指按下屏幕的時候會觸發 click,mousedown,mouseup事件&#xff0c;但是在移動設備上有專門的事件&#xff1a; touch 備注&#xff1a; 在移動端touch事件需要通過事件監聽的方式添加touchsta…

程序員計算器HEX、EDC、OCT等等的意思

binary 二進制 對應的是 BINoctal 八進制的 ---- OCThexadecimal 十六進制的 --- HEXdecimal 十進制的 -- DEC 轉載于:https://www.cnblogs.com/132818Creator/p/11459984.html

為什么mysql 5.7.24啟停不顯示錯誤信息?log-error_verbosity參數

關鍵詞&#xff1a;log-error_verbosity &#xff0c;mysql啟停沒有信息&#xff0c;mysql啟停不顯示錯誤信息&#xff0c;mysql不顯示啟停信息 原因就是因為 log-error_verbosity 2 被設置成了1/2&#xff0c;需要設置成3才行。 轉載自&#xff1a;https://www.cnblogs.com/k…

ASP.NET Core 3.0中使用動態控制器路由

原文&#xff1a;Dynamic controller routing in ASP.NET Core 3.0 作者&#xff1a;Filip W 譯文&#xff1a;https://www.cnblogs.com/lwqlun/p/11461657.html 譯者&#xff1a;Lamond Lu 譯者注 今天在網上看到了這篇關于ASP.NET Core動態路由的文章&#xff0c;感覺蠻有意思…

Petrozavodsk Winter Camp, Warsaw U, 2014, A The Carpet

一個地圖上有若干障礙&#xff0c;問允許出現一個障礙的最大子矩形為多大&#xff1f; 最大子矩形改編 #include<bits/stdc.h> using namespace std; #define rep(i, j, k) for (int i int(j); i < int(k); i) #define dwn(i, j, k) for (int i int(j); i > int…

d3.js 教程 模仿echarts折線圖

今天我們來仿echarts折線圖,這個圖在echarts是折線圖堆疊&#xff0c;但是我用d3改造成了普通的折線圖&#xff0c;只為了大家學習&#xff08;其實在簡單的寫一個布局就可以&#xff09;。廢話不多說商行代碼。 1 制作 Line 類 class Line {constructor() {this._width 1100;…

vue中v-for的使用

本人正在開始學習Vue,每天寫寫基礎的記錄,希望對大家有幫助,如有錯誤還望指出,我也是一個小白,也希望大家能一起進步 v-for指令的使用: 1.循環普通數組 item in list 中的item是自己個想寫什么名寫什么名 另一種寫法 i 表示索引值 2.循環對象數組 3.循環普通對象 4.迭代數字 注…