14.6停止線程

在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,此時停止線程。

多線程運行狀態
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章