亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
一、執(zhí)行緒的狀態(tài)圖? ? ?
#二、狀態(tài)詳細(xì)說(shuō)明
1.初始狀態(tài)(NEW)
2.1. 就緒狀態(tài)(RUNNABLE之READY)
2.2. 運(yùn)行中狀態(tài)(RUNNABLE之RUNNING)
3. 阻塞狀態(tài)(BLOCKED)
6. 終止?fàn)顟B(tài)(TERMINATED)
三、等待佇列
四、同步佇列狀態(tài)
五、幾個(gè)方法的比較
首頁(yè) Java Java基礎(chǔ) java有幾種線程狀態(tài)

java有幾種線程狀態(tài)

Nov 24, 2022 pm 04:03 PM
java

java有6種執(zhí)行緒狀態(tài):初始(NEW)、執(zhí)行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)、逾時(shí)等待(TIMED_WAITING)、終止(TERMINATED)。用new關(guān)鍵字新建一個(gè)線程,但還沒(méi)有呼叫start()方法,這個(gè)線程就處?kù)缎陆顟B(tài);阻塞狀態(tài)表示線程正等待監(jiān)視器鎖,而陷入的狀態(tài);進(jìn)入等待狀態(tài)的線程需要等待其他線程做出一些特定動(dòng)作(通知或中斷)。

java有幾種線程狀態(tài)

本教學(xué)操作環(huán)境:windows7系統(tǒng)、java8版本、Dell G3電腦。

Java中執(zhí)行緒的狀態(tài)分為6種:

1. 初始(NEW):新建立了一個(gè)執(zhí)行緒對(duì)象,但還沒(méi)有呼叫start()方法。
2. 運(yùn)行(RUNNABLE):Java執(zhí)行緒中將就緒(ready)和運(yùn)行中(running)兩種狀態(tài)籠統(tǒng)的稱為「運(yùn)行」。
執(zhí)行緒物件建立後,其他執(zhí)行緒(例如main執(zhí)行緒)呼叫了該物件的start()方法。此狀態(tài)的執(zhí)行緒位於可運(yùn)行執(zhí)行緒池中,等待被執(zhí)行緒調(diào)度選中,取得CPU的使用權(quán),此時(shí)處?kù)毒途w狀態(tài)(ready)。就緒狀態(tài)的執(zhí)行緒在獲得CPU時(shí)間片後變成運(yùn)行中狀態(tài)(running)。
3.?阻斷(BLOCKED):表示執(zhí)行緒阻塞於鎖定。
4.?等待(WAITING):進(jìn)入該狀態(tài)的執(zhí)行緒需要等待其他執(zhí)行緒做出一些特定動(dòng)作(通知或中斷)。
5.?逾時(shí)等待(TIMED_WAITING):此狀態(tài)不同於WAITING,它可以在指定的時(shí)間後自行回傳。
6. 終止(TERMINATED):表示該執(zhí)行緒已經(jīng)執(zhí)行完畢。

這6種狀態(tài)定義在Thread類別的State枚舉中,可查看原始碼進(jìn)行一一對(duì)應(yīng)。

一、執(zhí)行緒的狀態(tài)圖? ? ?

java有幾種線程狀態(tài)

#二、狀態(tài)詳細(xì)說(shuō)明

1.初始狀態(tài)(NEW)

實(shí)作Runnable介面和繼承Thread可以得到一個(gè)執(zhí)行緒類,new一個(gè)實(shí)例出來(lái),執(zhí)行緒就進(jìn)入了初始狀態(tài)。

2.1. 就緒狀態(tài)(RUNNABLE之READY)

  • 就緒狀態(tài)只是說(shuō)你資格運(yùn)行,調(diào)度程式?jīng)]有挑選到你,你就永遠(yuǎn)是就緒狀態(tài)。

  • 呼叫執(zhí)行緒的start()方法,此執(zhí)行緒進(jìn)入就緒狀態(tài)。

  • 目前執(zhí)行緒sleep()方法結(jié)束,其他執(zhí)行緒join()結(jié)束,等待使用者輸入完畢,某個(gè)執(zhí)行緒拿到物件鎖,這些執(zhí)行緒也會(huì)進(jìn)入就緒狀態(tài)。

  • 目前執(zhí)行緒時(shí)間片用完了,呼叫目前執(zhí)行緒的yield()方法,目前執(zhí)行緒進(jìn)入就緒狀態(tài)。

  • 鎖定池裡的執(zhí)行緒拿到物件鎖定後,進(jìn)入就緒狀態(tài)。

2.2. 運(yùn)行中狀態(tài)(RUNNABLE之RUNNING)

執(zhí)行緒調(diào)度程式從可運(yùn)行池中選擇一個(gè)執(zhí)行緒作為當(dāng)前執(zhí)行緒時(shí)執(zhí)行緒所處的狀態(tài)。這也是執(zhí)行緒進(jìn)入運(yùn)行狀態(tài)的唯一的一種方式。

3. 阻塞狀態(tài)(BLOCKED)

阻塞狀態(tài)是執(zhí)行緒阻塞在進(jìn)入synchronized關(guān)鍵字修飾的方法或程式碼區(qū)塊(取得鎖定)時(shí)的狀態(tài)。

4. 等待(WAITING)

處?kù)哆@種狀態(tài)的執(zhí)行緒不會(huì)被指派CPU執(zhí)行時(shí)間,它們要等待被明確地喚醒,否則會(huì)處?kù)稛o(wú)限期等待的狀態(tài)。

5. 逾時(shí)等待(TIMED_WAITING)

處?kù)哆@種狀態(tài)的執(zhí)行緒不會(huì)被指派CPU執(zhí)行時(shí)間,不過(guò)無(wú)須無(wú)限期等待被其他執(zhí)行緒顯示地喚醒,在達(dá)到一定時(shí)間後它們會(huì)自動(dòng)喚醒。

6. 終止?fàn)顟B(tài)(TERMINATED)

  • #當(dāng)執(zhí)行緒的run()方法完成時(shí),或是主執(zhí)行緒的main()方法完成時(shí),我們就認(rèn)為它終止了。這個(gè)線程物件也許是活的,但是它已經(jīng)不是一個(gè)單獨(dú)執(zhí)行的線程。線程一旦終止了,就不能復(fù)生。

  • 在一個(gè)終止的執(zhí)行緒上呼叫start()方法,會(huì)拋出java.lang.IllegalThreadStateException異常。

三、等待佇列

  • 呼叫obj的wait(), notify()方法前,必須取得obj鎖,也就是必須寫在synchronized( obj) 代碼段內(nèi)。
  • 與等待佇列相關(guān)的步驟和圖

java有幾種線程狀態(tài)

  • #執(zhí)行緒1取得物件A的鎖,正在使用物件A 。

  • 執(zhí)行緒1呼叫物件A的wait()方法。

  • 線程1釋放物件A的鎖,並馬上進(jìn)入等待佇列。

  • 鎖定池裡面的物件爭(zhēng)搶物件A的鎖定。

  • 線程5取得物件A的鎖,進(jìn)入synchronized區(qū)塊,使用物件A。

  • 線程5呼叫物件A的notifyAll()方法,喚醒所有線程,所有執(zhí)行緒進(jìn)入同步佇列。若執(zhí)行緒5呼叫物件A的notify()方法,則喚醒一個(gè)線程,不知道會(huì)喚醒誰(shuí),被喚醒的那個(gè)執(zhí)行緒進(jìn)入同步佇列。

  • notifyAll()方法所在synchronized結(jié)束,執(zhí)行緒5釋放物件A的鎖定。

  • 同步隊(duì)列的線程爭(zhēng)搶物件鎖,但線程1什麼時(shí)候能搶到就不知道了。

四、同步佇列狀態(tài)

  • #當(dāng)前執(zhí)行緒想呼叫物件A的同步方法時(shí),發(fā)現(xiàn)物件A的鎖被別的執(zhí)行緒佔(zhàn)有,此時(shí)目前執(zhí)行緒進(jìn)入同步隊(duì)列。簡(jiǎn)言之,同步佇列裡面放的都是想爭(zhēng)奪物件鎖定的執(zhí)行緒。
  • 當(dāng)一個(gè)執(zhí)行緒1被另外一個(gè)執(zhí)行緒2喚醒時(shí),1執(zhí)行緒進(jìn)入同步佇列,去爭(zhēng)奪物件鎖定。
  • 同步佇列是在同步的環(huán)境下才有的概念,一個(gè)物件對(duì)應(yīng)一個(gè)同步佇列。
  • 執(zhí)行緒等待時(shí)間到了或被notify/notifyAll喚醒後,會(huì)進(jìn)入同步佇列競(jìng)爭(zhēng)鎖,如果取得鎖,進(jìn)入RUNNABLE狀態(tài),否則進(jìn)入BLOCKED狀態(tài)等待取得鎖定。

五、幾個(gè)方法的比較

  • #Thread.sleep(long millis),一定是目前執(zhí)行緒呼叫此方法,目前執(zhí)行緒進(jìn)入TIMED_WAITING狀態(tài),但不釋放物件鎖,millis後執(zhí)行緒自動(dòng)甦醒進(jìn)入就緒狀態(tài)。作用:給其它執(zhí)行緒執(zhí)行機(jī)會(huì)的最佳方式。

  • Thread.yield(),一定是當(dāng)前執(zhí)行緒呼叫此方法,當(dāng)前執(zhí)行緒放棄取得的CPU時(shí)間片,但不釋放鎖定資源,由運(yùn)行狀態(tài)變成就緒狀態(tài),讓OS再次選擇線程。作用:讓相同優(yōu)先權(quán)的執(zhí)行緒輪流執(zhí)行,但不保證一定會(huì)輪流執(zhí)行。實(shí)際上無(wú)法保證yield()達(dá)到讓步目的,因?yàn)樽尣降膱?zhí)行緒還有可能被執(zhí)行緒調(diào)度程序再次選取。 Thread.yield()不會(huì)導(dǎo)致阻塞。此方法與sleep()類似,但無(wú)法由使用者指定暫停多久。

  • thread.join()/thread.join(long millis),目前執(zhí)行緒呼叫其它執(zhí)行緒t的join方法,目前執(zhí)行緒進(jìn)入WAITING/TIMED_WAITING狀態(tài),目前執(zhí)行緒不會(huì)釋放已經(jīng)持有的物件鎖定。執(zhí)行緒t執(zhí)行完畢或millis時(shí)間到,目前執(zhí)行緒一般情況下進(jìn)入RUNNABLE狀態(tài),也有可能進(jìn)入BLOCKED狀態(tài)(因?yàn)閖oin是基於wait實(shí)現(xiàn)的)。

  • obj.wait(),目前執(zhí)行緒呼叫物件的wait()方法,目前執(zhí)行緒釋放物件鎖,進(jìn)入等待佇列。依靠notify()/notifyAll()喚醒或wait(long timeout) timeout時(shí)間到自動(dòng)喚醒。

  • obj.notify()喚醒在此物件監(jiān)視器上等待的單一線程,選擇是任意性的。 notifyAll()喚醒在此物件監(jiān)視器上等待的所有執(zhí)行緒。

  • LockSupport.park()/LockSupport.parkNanos(long nanos),LockSupport.parkUntil(long deadlines), 目前執(zhí)行緒進(jìn)入WAITING/TIMED_WAITING狀態(tài)。比較wait方法,不需要取得鎖定就可以讓執(zhí)行緒進(jìn)入WAITING/TIMED_WAITING狀態(tài),需要透過(guò)LockSupport.unpark(Thread thread)喚醒。

更多程式相關(guān)知識(shí),請(qǐng)?jiān)煸L:程式設(shè)計(jì)教學(xué)! !

以上是java有幾種線程狀態(tài)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
VSCODE設(shè)置。 JSON位置 VSCODE設(shè)置。 JSON位置 Aug 01, 2025 am 06:12 AM

settings.json文件位於用戶級(jí)或工作區(qū)級(jí)路徑,用於自定義VSCode設(shè)置。 1.用戶級(jí)路徑:Windows為C:\Users\\AppData\Roaming\Code\User\settings.json,macOS為/Users//Library/ApplicationSupport/Code/User/settings.json,Linux為/home//.config/Code/User/settings.json;2.工作區(qū)級(jí)路徑:項(xiàng)目根目錄下的.vscode/settings

如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務(wù),必須先關(guān)閉自動(dòng)提交模式,再執(zhí)行多個(gè)操作,最後根據(jù)結(jié)果提交或回滾;1.調(diào)用conn.setAutoCommit(false)以開始事務(wù);2.執(zhí)行多個(gè)SQL操作,如INSERT和UPDATE;3.若所有操作成功則調(diào)用conn.commit(),若發(fā)生異常則調(diào)用conn.rollback()確保數(shù)據(jù)一致性;同時(shí)應(yīng)使用try-with-resources管理資源,妥善處理異常並關(guān)閉連接,避免連接洩漏;此外建議使用連接池、設(shè)置保存點(diǎn)實(shí)現(xiàn)部分回滾,並保持事務(wù)盡可能短以提升性能。

在Java的掌握依賴注入春季和Guice 在Java的掌握依賴注入春季和Guice Aug 01, 2025 am 05:53 AM

依賴性(di)IsadesignpatternwhereObjectsReceivedenciesenciesExtern上,推廣looseSecouplingAndEaseerTestingThroughConstructor,setter,orfieldInjection.2.springfraMefringframeWorkSannotationsLikeLikeLike@component@component,@component,@service,@autowiredwithjava-service和@autowiredwithjava-ligatiredwithjava-lase-lightike

了解Java虛擬機(jī)(JVM)內(nèi)部 了解Java虛擬機(jī)(JVM)內(nèi)部 Aug 01, 2025 am 06:31 AM

TheJVMenablesJava’s"writeonce,runanywhere"capabilitybyexecutingbytecodethroughfourmaincomponents:1.TheClassLoaderSubsystemloads,links,andinitializes.classfilesusingbootstrap,extension,andapplicationclassloaders,ensuringsecureandlazyclassloa

如何使用Java的日曆? 如何使用Java的日曆? Aug 02, 2025 am 02:38 AM

使用java.time包中的類替代舊的Date和Calendar類;2.通過(guò)LocalDate、LocalDateTime和LocalTime獲取當(dāng)前日期時(shí)間;3.使用of()方法創(chuàng)建特定日期時(shí)間;4.利用plus/minus方法不可變地增減時(shí)間;5.使用ZonedDateTime和ZoneId處理時(shí)區(qū);6.通過(guò)DateTimeFormatter格式化和解析日期字符串;7.必要時(shí)通過(guò)Instant與舊日期類型兼容;現(xiàn)代Java中日期處理應(yīng)優(yōu)先使用java.timeAPI,它提供了清晰、不可變且線

Google Chrome無(wú)法打開本地文件 Google Chrome無(wú)法打開本地文件 Aug 01, 2025 am 05:24 AM

ChromecanopenlocalfileslikeHTMLandPDFsbyusing"Openfile"ordraggingthemintothebrowser;ensuretheaddressstartswithfile:///;2.SecurityrestrictionsblockAJAX,localStorage,andcross-folderaccessonfile://;usealocalserverlikepython-mhttp.server8000tor

了解網(wǎng)絡(luò)端口和防火牆 了解網(wǎng)絡(luò)端口和防火牆 Aug 01, 2025 am 06:40 AM

NetworkPortSandFireWallsworkTogetHertoEnableCommunication whereSeringSecurity.1.NetWorkPortSareVirtualendPointSnumbered0-655 35,with-Well-with-Newonportslike80(HTTP),443(https),22(SSH)和25(smtp)sindiessingspefificservices.2.portsoperateervertcp(可靠,c

比較Java框架:Spring Boot vs Quarkus vs Micronaut 比較Java框架:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

前形式攝取,quarkusandmicronautleaddueTocile timeProcessingandGraalvSupport,withquarkusoftenpernperforminglightbetterine nosserless notelless centarios.2。

See all articles