Java多線程實戰(zhàn)筆記二

一堰塌、線程的六種狀態(tài)

  1. New(新創(chuàng)建)
  2. Runnable(可運行)
  3. Blocked(被阻塞)
  4. Waiting(等待)
  5. Timed waiting(計時等待)
  6. Terminated(被終止)

①可以通過Thread的getState()的實例方法獲取線程的狀態(tài)详囤。

②new狀態(tài)是指new Thread()被調(diào)用后,start()被調(diào)用之前服傍。

③Runnable狀態(tài)是指start()被調(diào)用之后曲稼,其是否運行取決于操作系統(tǒng)給線程提供的運行時間。

④阻塞狀態(tài)是指線程在試圖獲取一內(nèi)部的對象鎖,而該鎖被其他線程持有佑淀,則該線程進入阻塞狀態(tài)。

⑤等待狀態(tài)是指卷要,當線程等待另一個線程通知調(diào)度器一個條件時渣聚,它自己進入等待狀態(tài)。

⑥線程的終止a.因為run方法正常退出而自然死亡僧叉,b因為一個沒有捕獲的異常而意外死亡奕枝。

二、 join方法

join方法用于協(xié)調(diào)多個線程的工作瓶堕,即有時候我們可能將任務(wù)分成了兩部分以上隘道,而有一部分可能會先執(zhí)行完但又需要用到其他任務(wù)的執(zhí)行結(jié)果。這個時候就可以用join方法來等待其他任務(wù)執(zhí)行完郎笆。

    //t1線程用于計算x變量谭梗,t2線程則用于輸出x變量
    Thread t1 = new Thread(new Runnable() {
        @Override
        public void run() {
            try{
                Thread.sleep(5000);
                x = 300;
            }catch (Exception e){
                System.out.println(e.getMessage());
            }
        }
    });
    Thread t2 = new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                t1.join();
                System.out.println(x);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    });
    t1.start();
    t2.start();

假設(shè)x為線程實例,x.join方法使得當前線程(即執(zhí)行這條語句的線程)在x線程執(zhí)行完畢(終止狀態(tài))之前進入阻塞狀態(tài)宛蚓。

當線程在join某個線程的時候(處于等待狀態(tài)的時候)被中斷將引發(fā)InterruptedException異常激捏。所以調(diào)用join方法時需要處理InterruptExcepiton異常。join方法的內(nèi)部實現(xiàn)是wait(long)凄吏,具有釋放鎖的特點远舅。

三、synchronized用法總結(jié)

  1. synchronized(同步的意思)痕钢,主要有兩種用法即①修飾方法图柏,②修飾代碼塊;修飾的方法如果是實例方法任连,則同一個對象的所有synchronized方法在同一時刻最多只能被一個線程訪問蚤吹,如果修飾的方法是靜態(tài)類方法,則同一個類中所有synchronized方法在同一個時刻最多只能被一個線程訪問随抠。synchronized代碼塊根據(jù)修飾的是對象還是累也具有類似的效果裁着,主要區(qū)別是方法是對當前對象或當前類進行枷鎖,而synchronized代碼塊是對某一個對象或某個類進行枷鎖拱她,同時synchronized同步語句塊的粒度更加小跨算,可以將那些可以異步的耗時操作放在同步塊之外,從而提高系統(tǒng)效率椭懊。
  2. synchronized鎖重入,synchronized方法/塊的內(nèi)部調(diào)用本類或本對象的其他synchronized方法/塊時,總是可以得到鎖的氧猬。如果沒有這個特性背犯,會造成死鎖≈迅В可重入鎖支持在父子類繼承的環(huán)境中漠魏。但當子類重寫父類的synchronized方法時將無法繼承synchronized這一同步特性,必須為復(fù)寫方法加上synchronized關(guān)鍵字妄均。
  3. 一個線程如果出現(xiàn)異常柱锹,它鎖持有的鎖會自動釋放。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丰包,一起剝皮案震驚了整個濱河市禁熏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邑彪,老刑警劉巖瞧毙,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異寄症,居然都是意外死亡宙彪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門有巧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來释漆,“玉大人,你說我怎么就攤上這事篮迎∧型迹” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵柑潦,是天一觀的道長享言。 經(jīng)常有香客問我,道長渗鬼,這世上最難降的妖魔是什么览露? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任呢蛤,我火速辦了婚禮托呕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钾唬。我一直安慰自己堰乔,他們只是感情好偏化,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著镐侯,像睡著了一般侦讨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天韵卤,我揣著相機與錄音骗污,去河邊找鬼。 笑死沈条,一個胖子當著我的面吹牛需忿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜡歹,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼屋厘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了月而?” 一聲冷哼從身側(cè)響起汗洒,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎景鼠,沒想到半個月后仲翎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡铛漓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年溯香,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浓恶。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡玫坛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出包晰,到底是詐尸還是另有隱情湿镀,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布伐憾,位于F島的核電站勉痴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏树肃。R本人自食惡果不足惜蒸矛,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望胸嘴。 院中可真熱鬧雏掠,春花似錦、人聲如沸劣像。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耳奕。三九已至绑青,卻和暖如春诬像,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闸婴。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工颅停, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掠拳。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像纸肉,于是被迫代替她去往敵國和親溺欧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

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

  • 該文章轉(zhuǎn)自:http://blog.csdn.net/evankaka/article/details/44153...
    加來依藍閱讀 7,333評論 3 87
  • Java多線程學(xué)習(xí) [-] 一擴展javalangThread類 二實現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 2,952評論 1 18
  • 本文主要講了java中多線程的使用方法柏肪、線程同步姐刁、線程數(shù)據(jù)傳遞、線程狀態(tài)及相應(yīng)的一些線程函數(shù)用法烦味、概述等聂使。 首先講...
    李欣陽閱讀 2,442評論 1 15
  • 寫在前面的話: 這篇博客是我從這里“轉(zhuǎn)載”的,為什么轉(zhuǎn)載兩個字加“”呢谬俄?因為這絕不是簡單的復(fù)制粘貼柏靶,我花了五六個小...
    SmartSean閱讀 4,711評論 12 45
  • 被人隨意安排的感覺真不好受屎蜓,誰讓你是小兵,新來的钥勋,誰都能給你派工作炬转,吃力不討好的都是你的,得了便宜還能賣乖的你沒有...
    西達雅閱讀 260評論 3 1