Thread之結束執行緒 8

2021-08-30 04:28:52 字數 1413 閱讀 7631

在thread中stop()方法已經被不推薦使用了,那麼我們該如何去以一種優美的姿態去結束掉它呢?

class threaddemo02 implements runnable

} public void changeflag()

}public class stopthread

num++;

system.out.println(thread.currentthread().getname()+"...停止..."+num);

這個是比較簡單的結束方式,但是會存在問題,當執行緒出於凍結狀態就不會讀取到標記,那麼執行緒就不會結束。

接下來我們來看第二種實現方式,原理是執行緒在執行的時候會判斷該執行緒是否為中斷狀態,如果不是,就往下執行,而且當執行緒為blocked狀態時,使用interrupt()則會catch捕獲到,然後也會結束執行緒。

class threaddemo06 implements runnable

system.out.println("結束");

這裡,當執行緒為阻塞狀態了,確實會停止,但是,如果執行緒是在執行狀態呢,怎麼可以讓它暴力停止呢?

我們來看網上流傳的第三種方式。

class threaddemo07 catch (interruptedexception e) }};

executethread.start();

} public void shutdown(long mills)

//未超時

try catch (interruptedexception e)

}//執行完畢直接走完被守護執行緒,守護執行緒也跟著結束

大致的思路是把要執行的**放在守護執行緒,用乙個執行緒去控制守護執行緒的終結和開啟,這樣當被守護執行緒停止時,守護執行緒自然也會被結束掉。在shutdown()時呼叫interrupt,此時被守護執行緒出於wait狀態,會**獲到異常從而結束該執行緒生命週期。此時守護執行緒也就跟著結束掉了。

Android執行緒管理之Thread使用總結

今天先來總結一下thread使用 new 一旦被例項化之後就處於new狀態 runnable 呼叫了start函式之後就處於runnable狀態 running 執行緒被cpu執行 呼叫run函式之後 就處於running狀態 blocked 呼叫join sleep wait 使執行緒處於bloc...

多執行緒 Thread

如果從另外乙個執行緒操作windows窗體上的控制項,就會與主線程產生競爭,造成不可預料的後果,甚至死鎖。因此,windows gui程式設計有乙個規則 只能通過建立控制項的執行緒來操作控制項的資料!實現方法 要從執行緒外操作windows控制項,那麼就要使用invoke或begininvoke方法...

Thread執行緒類

posted on 2011 05 03 10 45 明天陪你看海 閱讀 123 編輯收藏 說明 apartmentstate 獲取或設定此執行緒的單元狀態 currentcontext 獲取執行緒正在其中執行的當前上下文 currentthread 獲取當前正在執行的執行緒 isalive 獲取乙...