優(yōu)雅的中斷線程

創(chuàng)建線程的兩種方法:

  • 繼承Thread, 并實現(xiàn)run方法;
  • 實現(xiàn)Runnable;

不管是使用哪一種方法創(chuàng)建線程,run方法的任務(wù)執(zhí)行完了,線程就自動停止.
stop():不建議使用

public class ThreadStop extends Thread {
    @Override
    public void run() {
        super.run();
        for (int i=0;i<100000;i++){
            Log.e("ThreadStop","run: "+i);
        }
    }
}

thread = new ThreadStop();
        thread.start();
        thread.stop();
運行的日志

雖然stop()可以停止一個線程种玛,但是這個方法是不安全的,因為如果線程中操作的是一些復(fù)雜一點的對象,例如bitmap, 線程突然停止的話就會發(fā)生一些意想不到的bug, 而且這個api已經(jīng)被JAVA棄用作廢了半等,最好不要使用它筒捺。

isInterrupted():

測試線程Thread對象是否已經(jīng)是中斷狀態(tài),但是不清除狀態(tài)標志势就。

interrupted():

內(nèi)部實現(xiàn)是調(diào)用的當前線程的isInterrupted()泉瞻,并且會重置當前線程的中斷狀態(tài),(取反,如果連續(xù)調(diào)用兩次該方法,則第二次調(diào)用將返回 false (在第一次調(diào)用線程中斷被忽略,因為在中斷時不處于活動狀態(tài)的線程將由此返回 false 的方法反映出來))

interrupt():建議使用

interrupt是中斷的意思,調(diào)用interrupt()方法僅僅是在當前線程中打了一個停止的標記,并不是真正停止線程;

 Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 10; i ++){
                    try {
                        Thread.sleep(100);
                        Log.e("interrupt","thread run" + i);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                        break;
                    }
                }
            }
        });
        thread.start();
        Log.e("interrupt","thread sleep" + "");
        try {
            Thread.sleep(500);
        } catch (InterruptedException e){
            e.printStackTrace();
        }
        thread.interrupt();
        Log.e("interrupt","thread end");

09-28 17:14:54.234 2210-2210/com.example.administrator.javademo E/interrupt: thread sleep
09-28 17:14:54.334 2210-2323/com.example.administrator.javademo E/interrupt: thread run0
09-28 17:14:54.434 2210-2323/com.example.administrator.javademo E/interrupt: thread run1
09-28 17:14:54.534 2210-2323/com.example.administrator.javademo E/interrupt: thread run2
09-28 17:14:54.644 2210-2323/com.example.administrator.javademo E/interrupt: thread run3
09-28 17:14:54.734 2210-2210/com.example.administrator.javademo E/interrupt: thread end
09-28 17:14:54.734 2210-2323/com.example.administrator.javademo W/System.err: java.lang.InterruptedException

安全終止線程, 可以再加多一個判斷, 使用 this.interrupted() 來判斷當前線程是否停止了 ,如果停止就不往下執(zhí)行 ,直接跳出循環(huán)體;

if (this.interrupted()){
     break;
}

或者:

if (this.interrupted()) {
    throw new InterruptedException();
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末苞冯,一起剝皮案震驚了整個濱河市袖牙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舅锄,老刑警劉巖鞭达,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異巧娱,居然都是意外死亡碉怔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門禁添,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撮胧,“玉大人,你說我怎么就攤上這事老翘∏凵叮” “怎么了锻离?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長墓怀。 經(jīng)常有香客問我汽纠,道長,這世上最難降的妖魔是什么傀履? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任虱朵,我火速辦了婚禮,結(jié)果婚禮上钓账,老公的妹妹穿的比我還像新娘碴犬。我一直安慰自己,他們只是感情好梆暮,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布服协。 她就那樣靜靜地躺著,像睡著了一般啦粹。 火紅的嫁衣襯著肌膚如雪偿荷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天唠椭,我揣著相機與錄音跳纳,去河邊找鬼。 笑死贪嫂,一個胖子當著我的面吹牛棒旗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撩荣,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼饶深!你這毒婦竟也來了餐曹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤敌厘,失蹤者是張志新(化名)和其女友劉穎台猴,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俱两,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡饱狂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了宪彩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片休讳。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖尿孔,靈堂內(nèi)的尸體忽然破棺而出俊柔,到底是詐尸還是另有隱情筹麸,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布雏婶,位于F島的核電站物赶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏留晚。R本人自食惡果不足惜酵紫,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望错维。 院中可真熱鬧奖地,春花似錦、人聲如沸需五。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宏邮。三九已至泽示,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜜氨,已是汗流浹背械筛。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留飒炎,地道東北人埋哟。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像郎汪,于是被迫代替她去往敵國和親赤赊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

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