开发者社区> 问答> 正文

Executor配置项maxIdleTime 的问题 403.10 禁止访问:配置无效 

我怎么感觉 maxIdleTime 这个配置没用呢? 官方文档对这个配置项的解释是当线程空闲时间超过指定时间就会关闭,默认时间是1分钟。
可是我却从来没发现 OSChina 启动的那么多 Tomcat 线程又被回收过,特别是凌晨很空闲的时候也是如此。
用的是 Tomcat 7.0.32

展开
收起
kun坤 2020-05-27 14:00:48 357 0
1 条回答
写回答
取消 提交回答
  • 也许可能大概是没有用吧,应该和版本有关######呵呵######不清楚,现在做的项目还没达到高访问量。######

    翻了 osc 上面 tomcat 的源码,发现 Tomcat 在底层用的是  java.util.concurrent  包, StandardThreadExecutor 里面有个 TaskQueue extends LinkedBlockingQueue 的变量,它的 初始容量是 Int 最大值... 提供了对外的 set 、 get 方法,不知道 tomcat 配置中会不会更改,要是有时间再去下载源码编译看看才知道,如果没改,那意味着 maxIdleTime 的设置无效。。。
    本来昨晚11点想回复的,结果, 亲,现在都几点了,早点洗洗睡吧  :) 

    ######我了tomcat的源码,maxIdleTime是jdk的threadpoolexecutor的keepalivetime,keepalivetime是指当前线程总数超过corePoolSize,会将空闲时间超过maxIdleTIme的thread杀死知道线程总数为corePoolSize。你没看到线程回收,应该是线程总数没有达到corePoolSize。只有线程数达到corePoolSize,并且taskQueue队列满了才会添加worker线程。
    2020-05-27 17:33:01
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载