【发布时间】:2012-12-17 05:52:02
【问题描述】:
阅读 throw Daemon threads 并根据我的要求实现后提出了几个疑问。 请澄清一下
-
我正在使用 ServletContextListener 类来调用需要运行 unitl JVM 退出的守护线程
public void contextInitialized (ServletContextEvent event) { context = event.getServletContext(); //getting from spring context MyServiceManager serviceManager = (MyServiceManager) ctx.getBean("myServiceManager"); serviceManager.setDaemon(true); serviceManager.start(); } -
在 ServiceManager 类中,我正在运行一个无限循环来一直运行程序,直到 JVM 存在
public void run() { try { startService(); } catch (Exception e) { logger.error("Error Occured in Background Process Runner"); } } private void startService(){ while(true){ try{ //invoke some new threads and do processing jobs until server/jvm stops }catch(Exception e) { //log but don't quit } } } }
问题是,具有上述实现的守护线程会永远运行吗?如果没有,我应该怎么做才能完成我的工作。除非 JVM 停止(服务器停止),否则告诉它不要退出。
注意:我正在尽我的能力来排版这篇文章。但是今天发生了一些事情,它没有被格式化:(
【问题讨论】:
标签: java multithreading daemon background-process