線程

線程的狀態(tài)

線程分為五種狀態(tài)。

  1. 新建(new):當(dāng)我們創(chuàng)建線程的時候,線程出于new狀態(tài)腹泌。
  2. 可運(yùn)行狀態(tài)(runable):當(dāng)線程調(diào)用start()方法之后,線程出于可運(yùn)行狀態(tài)疮胖,等待cpu的時間片。
  3. 運(yùn)行狀態(tài)(running):當(dāng)線程獲得cpu時間片的時候誊役,線程出于運(yùn)行狀態(tài)获列。
  4. 堵塞狀態(tài)(blocked):堵塞狀態(tài)谷市,線程由于某種原因放棄了時間片蛔垢,只有重新獲得進(jìn)入runable狀態(tài)之后才有機(jī)會獲得時間片。堵塞狀態(tài)又分為三種:

    等待堵塞:調(diào)用wait()方法迫悠,進(jìn)入等待隊(duì)列中鹏漆,調(diào)用notify()方法進(jìn)入runable狀態(tài)。
    同步堵塞:線程出于running狀態(tài)创泄,當(dāng)無法獲得鎖時艺玲,會進(jìn)入同步隊(duì)列中。只有其他線程釋放鎖的時候喚醒同步隊(duì)列中的線程競爭獲得鎖進(jìn)入runable狀態(tài)鞠抑。
    其他堵塞:當(dāng)線程調(diào)用sleep(),join(),或者發(fā)起IO請求的時候饭聚,當(dāng)sleep()或者join()超時返回runable狀態(tài)。

  5. 死亡(dead):線程執(zhí)行完搁拙,或者異常退出的時候秒梳。
java中的線程狀態(tài)
image.png

圖片來自https://blog.csdn.net/qq_22771739/article/details/82529874

線程終止

如何讓線程終止法绵,thread中提供了stop()方法,但是不建議用stop方法酪碘,因?yàn)閟top()會造成線程安全問題朋譬。

public class StopTest {
    public static void main(String[] args) throws InterruptedException {
        Stop stop = new Stop();
        stop.start();
        Thread.sleep(1000);
        stop.stop();
        stop.print();
    }
}

class Stop extends Thread{
        int i=0;
        int j=0;

        @Override
    public void run() {
        synchronized (this){
            i++;
            try {
                Thread.sleep(4000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            j++;
        }
    }
    public  void print(){
        System.out.println("i="+i+"j="+j);
    }
}

輸出

i=1j=0

原因是因?yàn)樵诰€程執(zhí)行到一部分的時候,線程被終止了并沒有保證原子性的執(zhí)行完方法兴垦。
用interrupt()方法終止線程徙赢,當(dāng)線程出于sleep(),wait(),join()狀態(tài)的時候,調(diào)用interrup()方法將會拋出InterruptedException探越,線程終止了狡赐,但是方法還是可以繼續(xù)執(zhí)行完的。
用狀態(tài)標(biāo)識控制線程狀態(tài)钦幔,我們也可以通過一個狀態(tài)標(biāo)識來控制線程是否終止阴汇,這一方法在jdk的源碼中有很多體現(xiàn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末节槐,一起剝皮案震驚了整個濱河市搀庶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铜异,老刑警劉巖哥倔,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異揍庄,居然都是意外死亡咆蒿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門蚂子,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沃测,“玉大人,你說我怎么就攤上這事食茎〉倨疲” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵别渔,是天一觀的道長附迷。 經(jīng)常有香客問我,道長哎媚,這世上最難降的妖魔是什么喇伯? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮拨与,結(jié)果婚禮上稻据,老公的妹妹穿的比我還像新娘。我一直安慰自己买喧,他們只是感情好捻悯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布箩朴。 她就那樣靜靜地躺著,像睡著了一般秋度。 火紅的嫁衣襯著肌膚如雪炸庞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天荚斯,我揣著相機(jī)與錄音埠居,去河邊找鬼。 笑死事期,一個胖子當(dāng)著我的面吹牛滥壕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播兽泣,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼绎橘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了唠倦?” 一聲冷哼從身側(cè)響起称鳞,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稠鼻,沒想到半個月后冈止,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡候齿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年熙暴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慌盯。...
    茶點(diǎn)故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡周霉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出亚皂,到底是詐尸還是另有隱情俱箱,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布孕讳,位于F島的核電站匠楚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏厂财。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一峡懈、第九天 我趴在偏房一處隱蔽的房頂上張望璃饱。 院中可真熱鬧,春花似錦肪康、人聲如沸荚恶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谒撼。三九已至食寡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間廓潜,已是汗流浹背抵皱。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辩蛋,地道東北人呻畸。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像悼院,于是被迫代替她去往敵國和親伤为。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 多線程面試題: 1.什么是線程,什么是進(jìn)程,它們有什么區(qū)別和聯(lián)系,一個進(jìn)程里面是否必須有個線程 (先講進(jìn)程) 答案...
    java成功之路閱讀 11,355評論 0 3
  • 多線程主要技術(shù)進(jìn)程與線程線程狀態(tài)阻塞狀態(tài)分類線程的調(diào)度常用函數(shù)說明Thread類方法創(chuàng)建線程線程池線程安全向線程傳...
    小石頭呢閱讀 1,392評論 3 15
  • 本文主要講了java中多線程的使用方法据途、線程同步绞愚、線程數(shù)據(jù)傳遞、線程狀態(tài)及相應(yīng)的一些線程函數(shù)用法颖医、概述等爽醋。 首先講...
    李欣陽閱讀 2,454評論 1 15
  • Java多線程學(xué)習(xí) [-] 一擴(kuò)展javalangThread類 二實(shí)現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 2,957評論 1 18
  • 1. 線程和進(jìn)程的區(qū)別? 它們是不同的操作系統(tǒng)資源管理方式便脊。進(jìn)程有獨(dú)立的地址空間蚂四,一個進(jìn)程崩潰后,在保護(hù)模式下不會...
    Darkmoss閱讀 529評論 0 0