成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

談談你對Java線程5種狀態流轉原理的理解

開發 前端
舉個通俗一點的例子來解釋五種狀態,比如我們平時去商場上廁所,準備去上廁所就是新建狀態(new),上廁所要排隊,排隊就是就緒狀態(Runnable),有坑位了,輪到你了,蹲坑就是運行狀態(Running),蹲完坑發現沒有手紙,需要等待其他人送紙過來,這個狀態就是阻塞(Blocked),等上完廁所出來,上廁所這件事情結束了線程也就不存在了,就是死亡狀態。

?1、線程定義

回答線程流轉原理這個問題之前,我們先來回憶一下JDK中3種自定義線程的方式以及它們的優缺點。

圖片

第1種:是繼承Thread類。如代碼所示:

public class MyThread extends Thread{
public void run(){
// to do something
}
}

這種方式的優點是:實現簡單,只需實例化繼承類的實例,即可使用線程。

它的缺點是:擴展性不足,Java是單繼承的語言,如果一個類已經繼承了其他類,就無法通過這種方式實現自定義線程

圖片

第2種:是實現 Runnable 接口,如代碼所示:

public class MyThread implements Runable{
public void run(){
// to do something
}
}

它的優點是:擴展性好,可以在此基礎上繼承其他類,非常適合多線程處理一份資源的場景

它的缺點是:構造線程實例的過程相對繁瑣一點

圖片

第3種:是實現Callable接口,如代碼所示:

public class MyThread implements Callable<String>{
public String call() throws Exception{
// to do something
return null;
}
}

它的優點是:擴展性好,能支持回調并得到返回值,而且可以拋出受檢查異常。

它的缺點是:相較于實現Runnable接口的方式,調用過程較為繁瑣。

2、線程狀態流轉原理

首先來看這樣一張圖,它涵蓋了Java 中多線程各重要知識點。如果掌握了此圖,Java 中的多線程也就基本上掌握了。

圖片

從圖中可以看出,線程狀態的流轉,一共包括以下 5 種情形:

圖片

(1)新建狀態(New): 線程對象創建后,就進入了新建狀態。例如,Thread thread = new Thread()。

圖片

圖片

(2)就緒狀態(Runnable): 也被稱為“可執行狀態”。線程對象被創建后,其它線程調用了線程的start()方法,從而來啟動該線程。這個時候,線程處于就緒狀態,它隨時可能被CPU調度執行。

圖片

圖片

(3)運行狀態(Running): 是指線程獲取CPU資源后,正在運行。需要注意的是,線程只能從就緒狀態進入到運行狀態。

圖片

圖片

(4)阻塞狀態(Blocked): 是指線程因為某種原因放棄CPU使用權,暫時停止運行。直到線程進入就緒狀態,才有機會轉到運行狀態。

那么,阻塞又分為三種情況:

1) 等待阻塞,指通過調用線程的wait()方法,讓線程等待。

2) 同步阻塞 ,指線程在獲取synchronized同步鎖時,因為鎖被其它線程所占用而導致獲取失敗,會進入同步阻塞狀態。

3) 其他阻塞,是指通過調用線程的sleep()方法 或者 join()方法 又或者 發出了I/O請求的時候,線程會進入到阻塞狀態。當sleep()狀態超時、join()等待線程終止或者超時、或者I/O處理完畢時,線程重新轉入就緒狀態。

圖片

圖片

(5)死亡狀態(Dead): 是指線程執行完畢或者因異常退出了run()方法,線程結束生命周期。

圖片

圖片

舉個通俗一點的例子來解釋上面五種狀態,比如我們平時去商場上廁所,準備去上廁所就是新建狀態(new),上廁所要排隊,排隊就是就緒狀態(Runnable),有坑位了,輪到你了,蹲坑就是運行狀態(Running),蹲完坑發現沒有手紙,需要等待其他人送紙過來,這個狀態就是阻塞(Blocked),等上完廁所出來,上廁所這件事情結束了線程也就不存在了,就是死亡狀態。

需要注意的是:便秘也是阻塞狀態,你便秘太久,其他人會等不及,可能會把你趕走,這個就是掛起。還有一種情況就是,如果你便秘占坑位太久,其他人跟你說,先出去醞釀一下,5分鐘后再過來蹲坑,這就叫睡眠。

好了,以上就是我對線程狀態流轉原理的理解。

責任編輯:武曉燕 來源: Tom彈架構
相關推薦

2022-08-14 07:14:50

Kafka零拷貝

2023-11-28 12:25:02

多線程安全

2022-06-30 09:10:33

NoSQLHBaseRedis

2022-09-06 11:13:16

接口PipelineHandler

2022-09-23 11:00:27

KafkaZookeeper機制

2025-02-21 15:25:54

虛擬線程輕量級

2022-08-26 00:02:03

RocketMQ單體架構MQ

2022-09-19 07:57:59

云服務互聯網基礎設施

2024-09-20 05:46:00

2024-09-11 16:49:55

2024-09-02 16:10:19

vue2前端

2022-10-09 15:18:31

SwaggerOpenAPI工具

2024-05-31 08:10:58

Netty線程模型多路復用模型

2022-09-09 10:15:06

OAuthJava

2022-03-21 09:05:18

volatileCPUJava

2024-10-24 16:14:43

數據傳輸CPU零拷貝

2025-03-21 00:00:05

Reactor設計模式I/O 機制

2022-08-26 00:21:44

IO模型線程

2024-12-06 14:34:00

Spring過濾器

2025-03-07 00:11:00

JWTJSONSession
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩国产在线 | 久久久精品国产 | 国产精品久久久久久久久久久免费看 | 日韩成人在线电影 | 久草资源在线视频 | 在线播放中文字幕 | 欧美天堂一区 | 久久久久久国产一区二区三区 | 国产精品夜间视频香蕉 | 一级黄色片网址 | 成人av大全| 99热这里都是精品 | 成人深夜福利 | 中文字幕第一页在线 | 久久久精品一区二区三区 | 久久久久久亚洲 | 成人动慢 | 99精品欧美一区二区蜜桃免费 | 亚洲一区二区精品视频 | 91精品国产美女在线观看 | 黄色香蕉视频在线观看 | 作爱视频免费观看 | 日韩一区欧美一区 | 狠狠色综合久久丁香婷婷 | 欧美日韩在线不卡 | 日韩视频区 | 欧美性网 | 青青草原综合久久大伊人精品 | 欧美成人a | 亚洲黄色片免费观看 | 国产a级黄色录像 | 成人av电影在线观看 | 99福利视频 | www.免费看片.com| 日本一卡精品视频免费 | 国产一区| 狠狠av| 日本涩涩网 | a级毛片国产 | 亚洲福利一区二区 | 亚洲一区二区三区在线播放 |