首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ThreadPoolExecutor在服务器启动几个小时后自动关闭

ThreadPoolExecutor在服务器启动几个小时后自动关闭
EN

Stack Overflow用户
提问于 2018-08-03 19:56:27
回答 1查看 45关注 0票数 1

我创建了一个corePool size = 10,Max Pool Size = 50,work Queue = 100的ThreadPoolExecuter,在本地机器上一切正常,但在开发服务器(Linux机)上,线程池活跃了几个小时,然后自动关闭。

所以在那之后,所有的新任务都被拒绝了。

我们分配给这个线程池的任务的超时时间是25秒。

我们也有多个ThreadPools,但当我们关闭服务器时,它们就会关闭。

代码语言:javascript
复制
private static ArrayBlockingQueue<Runnable> workQueue = new ArrayBlockingQueue<Runnable>(100);

ThreadFactory threadFactory = getNamedTreadFactory(false, "Thread-01");

xecutorService es = new ThreadPoolExecutor(10, 50, 3, TimeUnit.SECONDS, workQueue, threadFactory, handler);
EN

回答 1

Stack Overflow用户

发布于 2018-08-06 16:06:16

这个问题背后的原因是我们有监听上下文活动的ServletContextListner实现。因此,当DEV服务器上的代码被推送时,应用程序被热部署,应用程序上下文被重新创建,这一次它关闭了池。

代码语言:javascript
复制
public class ApplicationContextListner implements ServletContextListener{

@Override
public void contextDestroyed(ServletContextEvent arg0) {
    //Here the pool shutdown code was present - so we removed it 
}}

从destroy method.It中删除池关闭调用后,它工作了。

问题已解决。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51672101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档