守护线程
线程分为 守护线程和用户线程 ,当程序中没有用户线程时,JVM会退出.
方法 | 内容 |
---|---|
void setDaemon(boolean on) | 将该线程标记为守护线程或用户线程 |
boolean isDeamon() | 测试该线程是否为守护线程。 |
☆ void setDaemon(boolean on)
作用:
- 将该线程标记为守护线程或用户线程。
- 当正在运行的线程都是守护线程时(当程序中没有用户进程在运行时),Java 虚拟机退出。
- 该方法必须在启动线程前调用。
参数:
- 如果为 true,则将该线程标记为守护线程;
- 如果为 false,则将该线程标记为用户线程.
☆ boolean isDeamon()
作用:
- 测试该线程是否为守护线程。
参数:
- 如果该线程是守护线程,则返回 true;
- 否则返回 false。
案例:
public class TestDaemon {
public static void main(String[] args) {
Thread god = new Thread(new God());
//设置上帝线程为守护线程
god.setDaemon(true);
god.start();
Thread xiaoming = new Thread(new Person(),"小明");
xiaoming.start();
}
}
//人
class Person implements Runnable{
@Override
public void run() {
for (int i = 0; i < 35000; i++) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(i+"天,"+Thread.currentThread().getName()+" 开心的活着!");
}
System.out.println("这一天,"+Thread.currentThread().getName()+" 离开了这个世界!");
}
}
//神
class God implements Runnable{
@Override
public void run() {
while (true){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("上帝守护着你。。。");
}
}
}