在java中,一個線程對象是有自己的生命週期的,如果要想控制好線程的生命週期,則首先應該認識其生命週期。
被廢棄的線程生命週期控制方法:
停止多線程:public void stop();
掛起線程:public final void suspend();
恢復掛起的線程執行:public final void resume();
從jdk1.2開始不推薦使用,現在可以通過設置標誌位停止一個線程的運行
範例:優雅的停止線程運行
public class ThreadDome333 {
public static boolean flag=true; //線程停止標記
public static void main(String[] args) throws InterruptedException {
new Thread(()->{ //新的線程對象
long num=0;
while(flag) { //判斷標記
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"正在運行、num"+num++);
}
},"執行線程").start();
Thread.sleep(200); //運行200毫秒
flag=false; //停止線程,修改執行標記
}
}
執行結果
執行線程正在運行、num0
執行線程正在運行、num1
執行線程正在運行、num2
執行線程正在運行、num3
剛開始爲真,滿足循環條件,50毫秒循環一次,每50毫秒num+1,線程運行200毫秒時,改變flag,此時停止線程。
多線程運行狀態