日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
談談你對Java線程5種狀態(tài)流轉原理的理解

?1、線程定義

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

十余年的平南網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。網絡營銷推廣的優(yōu)勢是能夠根據用戶設備顯示端的尺寸不同,自動調整平南建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯公司從事“平南網站設計”,“平南網站推廣”以來,每個客戶項目都認真落實執(zhí)行。

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

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

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

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

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

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

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

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

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

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

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

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

2、線程狀態(tài)流轉原理

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

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

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

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

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

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

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

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

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

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

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

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

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

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


當前名稱:談談你對Java線程5種狀態(tài)流轉原理的理解
本文路徑:http://m.5511xx.com/article/djegcsd.html