Java多線程:後臺守護線程

在多線程裏面可以進行守護線程的定義,也就是說如果現在主線程或其他線程還在運行,那麼守護線程將一直存在,並且運行在後臺狀態。

Thread類中關於守護線程的操作如下:

  • 設置爲守護線程:public final void setDaemon(boolean on);
  • 判斷是否守護線程:public final boolean isDaemon();

範例:使用守護線程

public class Main{
	public static boolean flag = true;
	public static void main(String args[]) throws Exception {
		
		Thread userThread = new Thread(()-> {
			for(int i = 0; i < 10; i++) {
				try {
					Thread.sleep(100);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				System.out.println(Thread.currentThread().getName() + "正在運行、i = " + i);
			}
		}, "用戶線程");		// 核心功能
		
		Thread daemonThread = new Thread(()-> {
			for(int i = 0; i < Integer.MAX_VALUE; i++) {
				try {
					Thread.sleep(100);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				System.out.println(Thread.currentThread().getName() + "正在運行、i = " + i);
			}
		}, "守護線程");		// 核心功能
		
		userThread.start();
		daemonThread.setDaemon(true);
		daemonThread.start();
	}
}

運行結果:

可以發現所有的守護線程都是圍繞在用戶線程的周圍,如果程序執行完畢了(所有用戶線程結束)守護線程也就消失了。在整個JVM裏最大的守護線程就是GC線程。GC進行的是垃圾回收工作。

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