我们知道静态变量是ClassLoader级别的,如果Web应用程序停止,这些静态变量也会从JVM中清除。但是线程则是JVM级别的,如果你在Web应用中启动一个线程,这个线程的生命周期并不会和Web应用程序保持同步。也就是说,即使你停止了Web应用,这个线程依旧是活跃的。正是因为这个很隐晦的问题,所以很多有经验的开发者不太赞成在Web应用中私自启动线程。
如果我们手工使用JDK Timer(Quartz的Scheduler),在Web容器启动时启动Timer,当Web容器关闭时,除非你手工关闭这个Timer,否则Timer中的任务还会继续运行!
要终止自己的线程,需要按照下面的文章,监听tomcat容器关闭的消息,终止线程的运行:
http://tech.it168.com/oldarticle/2007-04-25/200704251027015_2.shtml
robbin建议自己单独启动一个Job Server,来quartz跑job,不要部署在web容器中。
http://robbin.iteye.com/blog/40989?page=2
如果我们手工使用JDK Timer(Quartz的Scheduler),在Web容器启动时启动Timer,当Web容器关闭时,除非你手工关闭这个Timer,否则Timer中的任务还会继续运行!
要终止自己的线程,需要按照下面的文章,监听tomcat容器关闭的消息,终止线程的运行:
http://tech.it168.com/oldarticle/2007-04-25/200704251027015_2.shtml
robbin建议自己单独启动一个Job Server,来quartz跑job,不要部署在web容器中。
http://robbin.iteye.com/blog/40989?page=2