守护线程
守护线程也称之为后台线程,守护线程的主要作用于为其他线程提供服务,当守护线程守护的主线程结束后,守护线程也将结束,比如,文件下载时,一条主线程实现文件拷贝,另一条子线程用于计算下载进度,该条子线程主要为下载线程提供服务,因此计算下载进度的线程可以定义为守护线程;只需要调用Thread类提供的setDaemon()方法即可实现,java中要将其他线程设置为守护线程。
案例一:
/**
* 守护线程也称为后台线程。
* 默认创建的线程都是普通线程,守护线程是通过调用线程的setDaemon方法转变的
*守护线程的使用上与普通线程没有区别,但是在结束时机上有些不同:进程的退出。
* 当进程中所有的普通线程都结束时,进程就会结束,此时正在执行的所有守护线程都会被强制停止。
*/
public class DaemonDemo {
public static void main(String[] args) {
//公主
Thread princess = new Thread() {
public void run() {
for(int i=0;i<5;i++) {
System.out.println("公主:let me go!");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
System.out.println("princess:别守护啊,来救我!");
System.out.println("扑通!");
}
};
//骑士 (守护线程)
Thread knight = new Thread() {
public void run() {
while(true) {
System.out.println("knight:my princess,我将永远守护你!");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
}
};
princess.start();
/*
* 当参数为true时,将该线程转换为守护线程
* 需要注意:必须在线程启动前进行。
*/
knight.setDaemon(true);
knight.start();
}
}