求一种tomcat关闭回收线程池里没有处理完的资源的方法

永明 发布于 2013/12/05 18:13
阅读 2K+
收藏 0

 最近做一个类似于一个消息处理系统,放在tomcat下运行。我想在tomcat 关闭时,保存线程池里没有处理完的消息。我用的Spring管理类的生命中期,但是tomcat似乎在应用里的线程关闭前自己就关闭了。把类也卸载掉了,导致连文件输出都出错。

     请问有没有好的解决方法处理线程池里资源回收的方案。

加载中
0
☆冰山一角☆
实时保存处理的消息不行吗?tomcat的异常关闭无论如何都不行啊,比如断电
0
永明
永明
实时处理,数据库处理不过来,我是先把接受到的消息放入缓存池,然后由线程池批量处理。我指的是tomcat的正常关闭,有时系统要更新升级什么的就的重启。但是在关闭时,线程池的线程的关闭速度不如tomcat的关闭的快,这个比较郁闷。
0
☆冰山一角☆
使用Listener行吗,实现ServletContextListener接口,里边有contextDestroyed方法
0
永明
永明
我试了一下, contextDestroyed分析线程池的线程和应用中的一些线程是否isAlive,有一定的效果。我觉得不好的一点就是,jvm那多线程怎么识别自己应用创建的线程。
0
永明
永明
还有就是tomcat的关闭限定了时间,好像是5s,在这5s内还没有关闭就kill掉进程了,我得在5s内处理掉所有的回收
0
永明
永明
我想问下还有没有更加好的解耦的解决方案?
返回顶部
顶部