stop()等方法過期之後,中止線程的惟一方法就是結束run()方法:
開啓多線程運行一般都是循環結構,只要使用標識位控制住循環,就能夠讓run()方法結束,即線程結束。多線程
特殊狀況:當線程處於了凍結狀態就不會讀取到標記,那麼線程就不會中止。線程
interrupt()方法
將凍結狀態的線程強制運行,並拋出異常InterruptedException。 注意只有在運行狀態的線程才能讀到標識位,最終中止線程。當沒有指定的方式讓線程恢復到運行狀態時,就須要使用該方法對凍結進行消除,並操做標識位讓線程結束。
下面的方法能夠配合interrupt()方法結束運行:code
class StopThread implements Runnable { public synchronized void run() { while (!Thread.currentThread.isInterrupted())//正常狀況執行代碼,一旦線程調用interrupt()方法,返回值會變true,跳出循環 { dosomething(); } } }
補充
守護線程setDaemon()
將該線程標記爲守護線程或用戶線程。當正在運行的線程都是守護線程時,Java 虛擬機退出。
該方法必須在啓動線程前調用。
t1.setDaemon(); //t1爲線程對象對象