关于newCachedThreadPool和newFixedThreadPool

有说法说newCachedThreadPool适合短任务
newFixedThreadPool适合长任务,如长网路连接
为何?

阅读 3.5k
2 个回答

java文档说的挺明白的,newCachedThreadPool在线程池里的线程如果60秒未被用到就杀掉了,适合短任务,newFixedThreadPool线程池里的线程一直存在,适合长任务。

主要从线程池的大小来考虑:

  • 短任务执行的快,大概率不容易积压很多,如果出现任务峰值,也会很短结束,这个时候考虑任务的处理效率,可以选择newCachedThreadPool启动更多的线程来处理,结束后60秒左右,处理线程就会关闭。
  • 长任务执行时间长,一旦产生积压,如并发处理,会是系统长时间处于满负荷状态,newFixedThreadPool限制并发数量,稳定系统性能

当然 我认为我是再强行解释,newCachedThreadPool在生产系统种使用风险太大,一旦任务过多,极有可能再不知情的情况下把系统干挂,慎用

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题