一、守护线程
package com.yanqi.task18;
public class ThreadDaemonTest extends Thread {
@Override
public void run() {
//System.out.println(isDaemon()? "该线程是守护线程": "该线程不是守护线程"); // 默认不是守护线程
// 当子线程不是守护线程时,虽然主线程先结束了,但是子线程依然会继续执行,直到打印完毕所有数据为止
// 当子线程是守护线程时,当主线程结束后,则子线程随之结束
for (int i = 0; i < 50; i++) {
System.out.println("子线程中:i = " + i);
}
}
public static void main(String[] args) {
ThreadDaemonTest tdt = new ThreadDaemonTest();
// 必须在线程启动之前设置子线程为守护线程
tdt.setDaemon(true);
tdt.start();
for (int i = 0; i < 20; i++) {
System.out.println("-------主线程中:i = " + i);
}
}
}
二、 编译打印
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=50782:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task18.ThreadDaemonTest
子线程中:i = 0
子线程中:i = 1
子线程中:i = 2
子线程中:i = 3
子线程中:i = 4
子线程中:i = 5
子线程中:i = 6
子线程中:i = 7
子线程中:i = 8
子线程中:i = 9
子线程中:i = 10
子线程中:i = 11
子线程中:i = 12
-------主线程中:i = 0
子线程中:i = 13
-------主线程中:i = 1
子线程中:i = 14
-------主线程中:i = 2
-------主线程中:i = 3
-------主线程中:i = 4
-------主线程中:i = 5
子线程中:i = 15
-------主线程中:i = 6
子线程中:i = 16
-------主线程中:i = 7
子线程中:i = 17
-------主线程中:i = 8
子线程中:i = 18
-------主线程中:i = 9
子线程中:i = 19
-------主线程中:i = 10
子线程中:i = 20
-------主线程中:i = 11
子线程中:i = 21
-------主线程中:i = 12
子线程中:i = 22
-------主线程中:i = 13
子线程中:i = 23
-------主线程中:i = 14
子线程中:i = 24
-------主线程中:i = 15
子线程中:i = 25
-------主线程中:i = 16
子线程中:i = 26
-------主线程中:i = 17
子线程中:i = 27
-------主线程中:i = 18
子线程中:i = 28
-------主线程中:i = 19
子线程中:i = 29
子线程中:i = 30
子线程中:i = 31
子线程中:i = 32
子线程中:i = 33
子线程中:i = 34
子线程中:i = 35
子线程中:i = 36
子线程中:i = 37
子线程中:i = 38
子线程中:i = 39
子线程中:i = 40
子线程中:i = 41
子线程中:i = 42
子线程中:i = 43
子线程中:i = 44
子线程中:i = 45
子线程中:i = 46
子线程中:i = 47
子线程中:i = 48
子线程中:i = 49
Process finished with exit code 0