所以我有一个非常相关的线程,我从程序开始时开始。当主线程做其他事情时,线程正在监听来自更大系统的事件。线程不应该停止工作,如果它停止工作,则应该重新创建并启动它。
我想我知道实现这个目标的多种方法,但我想知道你对一些事情的看法:
发布于 2015-06-03 15:06:39
您可以创建ExecutorService,它通过Executors.newSingleThreadExecutor()侦听事件。在这种情况下,您不需要查看线程,如果线程是健康的,ExecutorService会处理这个问题。SingleThreadExecutor只负责一次运行一个任务(可运行或可调用)。
发布于 2015-06-03 16:56:06
如果您正在使用普通Java提供的方法来正确查看线程状态,则不应该有任何错误。在抛出已检查的异常或线程出于某种奇怪的原因退出的情况下,try-finally块应该足以启动一个新线程(也确保它不是守护进程)。您可以使用带周期性暂停的with循环,最好使用线程调度机制,如赋时wait(...)或定时LockSupport#park(...)。您也可以休眠线程。
发布于 2015-06-03 17:38:25
线程不应该停止工作,如果它停止工作,.
好的,所以写下来,这样它就不会停止工作。
public void run() {
while (true) {
try {
Message message = receiveNextMessage();
handleMessage(message);
} catch (Exception ex) {
LOGGER.error(ex);
if (somethingTrulyHorribleHasHappened(ex)) {
Runtime.getRuntime().exit(1);
} else {
maybeResetSomethingThatNeedsToBeReset();
}
}
}
}https://stackoverflow.com/questions/30623435
复制相似问题