/**
* 后台线程又叫做守护线程,通常是为了辅助其他线程而运行的线程,‘
* 后台线程不妨碍程序终止,
* 一个程序中只要还有一个前台线程在执行,这个后台线程就不会终止。
* 反之,如果所有前台线程都已经结束,无论是否还有后台线程在执行,这个进程都会结束。
* 如果对某个线程对象在启动(调用start()方法)前调用setDeamon(true)方法,这个线程就会变成后台线程。
* 创建一个无限循环后台线程,验证前台线程结束后,它也结束
*/
package com.starain.threaddemo;
public class DaemonThread {
public static void main(String[] args) {
FrontThreadTester t1 = new FrontThreadTester(20);
Thread thread1 = new Thread(t1, "thread1");
DaemonThreadTester thread2 = new DaemonThreadTester("Daemon");
thread1.start();
thread2.setDaemon(true);
thread2.start();
}
}
class FrontThreadTester implements Runnable{ //实现Runnable方法创建线程
private int number;
public FrontThreadTester(int number){
this.number = number;
}
public void run(){
for (int i = 1; i <= number; i++) {
System.out.println("前台线程"+Thread.currentThread().getName()+"正在执行第"+i+"次");
}
}
}
class DaemonThreadTester extends Thread{ //扩展(继承)Thread类创建线程
private String name;
public DaemonThreadTester(String name){
this.name = name;
}
public void run(){
super.run();
while(true){
try {
Thread.sleep(1);
System.out.println(name+" is running...");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}