<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          線程狀態(tài)的那些事

          共 1863字,需瀏覽 4分鐘

           ·

          2021-11-18 13:43


          前言

          今天我們來探討下線程的狀態(tài),關(guān)于線程狀態(tài)我們會(huì)圍繞線程的運(yùn)行流程來分析,方法這塊我會(huì)盡可能分析線程(Thread)的每一個(gè)方法,由于RunnableCallable有且僅有一個(gè)run方法,所以我們今天討論的重點(diǎn)是Thread類,好了,下面讓我們?cè)敿?xì)來看下吧。

          線程的狀態(tài)

          線程的狀態(tài)

          首先是線程的狀態(tài),一個(gè)線程會(huì)有如下幾種狀態(tài):

          • NEW:新建狀態(tài),線程實(shí)例化完成后尚未運(yùn)行時(shí)處于該狀態(tài)下(Thread state for a thread which has not yet started.

          • RUNABLE:可運(yùn)行狀態(tài),在這種狀態(tài)下,限制在jvm正在運(yùn)行,但是不一定正在運(yùn)行,它可能在等操作系統(tǒng)的某個(gè)資源,比如處理器資源

          • BLOCKED:阻塞狀態(tài),在這種狀態(tài)下,說明線程正在等一個(gè)受監(jiān)控的鎖,拿到這個(gè)鎖,他就可以進(jìn)入到同步代碼塊或者方法中開始運(yùn)行,或者在調(diào)用Object.wait后重新進(jìn)入同步代碼塊或者方法中開始運(yùn)行。

          • WAITING:等待狀態(tài),線程處于等待狀態(tài)是由于調(diào)用Objecet.waitThread.join或者LockSupport.part方法中的任意一個(gè)導(dǎo)致的,處于等待狀態(tài)的線程必須等待其他線程完成特定操作才能恢復(fù),例如,一個(gè)線程調(diào)用了一個(gè)對(duì)象的Object.wait()方法,它必須等待其他線程調(diào)用Object.notify()或者Object.notifyAll()才能恢復(fù).。調(diào)用了Thread.join()的線程,必須等待其他線程執(zhí)行完成。

          • TIMED_WAITING:有時(shí)間限制的等待狀態(tài),當(dāng)然從名字上我們也能看出來,這是一種有超時(shí)時(shí)間的等待狀態(tài),達(dá)到等待時(shí)長時(shí)會(huì)自動(dòng)恢復(fù),一個(gè)線程進(jìn)入這種狀態(tài),通常是調(diào)用了如下方法:Thread.sleep、帶超時(shí)時(shí)間的Object.wait、帶超時(shí)時(shí)間的Thread.joinLockSupport.parkNanosLockSupport.parkUntil

          • TERMINATED:結(jié)束狀態(tài),線程運(yùn)行完成后的狀態(tài)。

          下面這張圖就是根據(jù)線程的各個(gè)狀態(tài)推演出來的,從這張圖中,我們可以很直觀的看到各個(gè)狀態(tài)之間的互相轉(zhuǎn)換:

          由于線程本身的啟動(dòng)是由系統(tǒng)調(diào)度完成的,所以對(duì)于線程的運(yùn)行態(tài)JVM本身是監(jiān)控不到的,這一點(diǎn)我們可以從start方法中看到端倪:

          首先start方法是一個(gè)同步方法,由synchronized修飾,同時(shí)在start方法內(nèi)部調(diào)用了另一個(gè)方法start0,這個(gè)方法是一個(gè)本地方法(由native修飾,基于C++開發(fā)的)

          結(jié)語

          原本這塊的內(nèi)容是打算周五分享的,但是由于最近太忙了,一直在拖,終于今天抽時(shí)間把這塊搞完了,當(dāng)然內(nèi)容本身和我之前計(jì)劃是有出入的,原本是計(jì)劃要和線程的相關(guān)方法一起分享的,但是時(shí)間和內(nèi)容上不允許,所以暫時(shí)就先分享這么多,關(guān)于狀態(tài)的轉(zhuǎn)換,后續(xù)我們?cè)龠M(jìn)一步驗(yàn)證。

          最近這段時(shí)間,真的是忙瘋了,自我感覺是從三月至今最忙碌的時(shí)間,不過這段忙碌而迷茫的時(shí)光也讓我想明白了,不論是學(xué)習(xí)、生活還是工作,我們都應(yīng)該按照自己的節(jié)奏循序漸進(jìn),不應(yīng)該勉強(qiáng)自己,一味地圖快,反而會(huì)讓你喪失興趣,喪失熱情,喪失動(dòng)力,甚至最后放棄這件事,所以最近一段時(shí)間在更新新內(nèi)容這塊我也沒有太勉強(qiáng)自己,工作上也并沒有特別卷(雖然已經(jīng)并之前卷了)。

          另外,我也意識(shí)到對(duì)你而言真正有意義的事,應(yīng)該是你熱愛的事,如果單純遵從欲望或者外界的壓力做事,最后你收獲的只能是失落和失望。拿我來說,周末玩了好幾個(gè)小時(shí)的游戲,然后刷了多半天的劇,但我感受到的不是愉悅和興奮,而是一種悠然而生的失落感,不真實(shí)感,甚至覺得自己又浪費(fèi)一天,真的還不如出去走走,曬曬太陽。反而是類似今天這樣忙碌了一天,而且解決了很多問題的時(shí)刻,我覺得更有意義,更充實(shí),也讓我覺得很有成就感。

          最后,從我一直以來的經(jīng)驗(yàn)來說,堅(jiān)持本身是需要消耗精力的,你只有保持充沛的精力,才能更好地堅(jiān)持自己想做的事,才能更好地面對(duì)一切挑戰(zhàn),克服一切的困難,所以從今天開始和自己和解吧,承認(rèn)自己的菜和不足,然后按照自己的節(jié)奏,養(yǎng)精蓄銳,徐徐前行……人的能量是有周期性的,你要契合自己的精力周期,選擇合適的事,否則終有一天你會(huì)榨干自己。

          今天廢話有點(diǎn)多,好了,先說這么多吧,各位小可愛晚安哦!

          - END -


          瀏覽 40
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲精品国产精品国自产在线 | 淫淫五月天婷婷 | 99有精品 | 乱仓片一级片 | 亚洲色小说 |