在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 獲取乙...