我有一个要求,我想启动一个轮询器,一直运行,直到机器重新启动或进程被杀死。现在,我尝试使用shell脚本从主方法启动轮询器,但问题是只要主方法完成执行,轮询器也停止工作,因为我没有使用任何服务器来实现此目的。如何保持我的程序活着只要一个守护进程线程正在运行?
我听说了一些关于daemon threads
,但我想知道如何创建一个守护线程,它将永远运行,并帮助我的轮询器也运行。
UPDATE:
public class SomeThread extends Thread {
@Override
public void run() {
UnitPoller unitPoller = new UnitPoller();
unitPoller.doPolling();
}
public static void main(String[] args) {
SomeThread someThread = new SomeThread();
someThread.setDaemon(true);
someThread.start();
}
}
以上就是我更新的类,现在每当我从主方法执行此线程,它创建一个线程,但只要主要方法执行完成,我的轮询停止工作,随着JVM关闭。
有了这个问题,我该怎么做。
感谢
这没有为我工作。请检查我的更新。 –
@ M.J .: Thread.setDaemon()的JavaDoc说:“当只有运行的线程都是守护进程线程时,Java虚拟机退出。所以如果你的线程是一个守护进程,JVM将退出。你需要的是一个非守护线程,如果你想让JVM保持运行。 –
在澄清问题后,如何删除结果不正确的部分? – oberlies