欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

线程池的core线程数你真的会设了?

程序员文章站 2022-04-27 08:02:50
...

  点击上方“JavaEdge”,关注公众号

设为“星标”,好文章不错过!

线程池的core线程数你真的会设了?

面试题

线程池的core线程数你真的会设了?

如果我们不小心每次都创建了这样一个自定义的线程池(10个core线程,50 max线程,2秒回收),反复执行测试接口线程,最终会被回收吗?如果不会,会出现什么问题?

线程池的core线程数你真的会设了?

讲解

线程池的core线程数你真的会设了?

不会被回收,且会发生OOM。

即使自定义线程池,core线程也不会回收,每次需要10个线程,刚好是core线程数,因此每次请求都会创建10个core线程数的线程池,请求次数多了后,很快就会OOM。

Exception in thread "main" java.lang.OutOfMemoryError: 
    unable to create new native thread

ThreadPoolExecutor 回收不了,因其工作线程 Worker 是内部类,只要它存活(即线程还在 run),就会阻止 ThreadPoolExecutor 回收,所以 ThreadPoolExecutor无法回收,不要自以为 ThreadPoolExecutor 没有引用就能回收。

往期推荐

阿里P8架构师教你kill代码重复/大量ifelse

一文讲清RedisCluster

阿里Java架构师教你写代码-如何校验参数?

你真的深知JWT(JSON Web Token)了吗?

OAuth 2.0实战(一)-通俗光速入门

线程池的core线程数你真的会设了?

目前交流群已有 800+人,旨在促进技术交流,可关注公众号添加笔者微信邀请进群

线程池的core线程数你真的会设了?

喜欢文章,点个“在看、点赞、分享”素质三连支持一下~