public class Test {
public static void main(String[] args) throws Exception {
System.out.println("start");
Testdemon demon = new Testdemon();
demon.setDaemon(true);
demon.start();
System.out.println("end");
}
}class Testdemon extends Thread{
private Logger logger = Logger.getLogger(Testdemon.class);
public void run() {

try {
while (true) {
logger.info("ok!!!!!");
Thread.sleep(5000);
}
} catch (Exception e) {
logger.info(e.getMessage());
e.printStackTrace();
}
}

}
以上是代码,运行起来之后,好像只执行了一遍就不执行了,日志文件里只有一条信息,我觉得我的这个程序应该是没有问题的呀!!!

解决方案 »

  1.   

    大哥你到底知不知道什么是守护线程啊!!你新起的线程demon不是通过 demon.setDaemon(true) 已将它设为守护线程了嘛。什么是守护线程?守护线程在没有用户线程可服务时自动离开,当JVM中所有的线程都是守护线程的时候,JVM就会退出。现在你的main线程是唯一的用户线程;它结束后,守护线程(垃圾回收线程、你自己new的这个demon线程)会自动的停掉啊。demon.setDaemon(true);  你把这句注掉试试,程序就不会再是你说的“只执行了一遍就不执行了”