专栏名称: Java知音
专注于Java,推送技术文章,热门开源项目等。致力打造一个有实用,有情怀的Java技术公众号!
今天看啥  ›  专栏  ›  Java知音

血泪教训,8 个线程池最佳实践和坑

Java知音  · 公众号  ·  · 2024-08-10 10:45
    

文章预览

戳上方蓝字“ Java知音 ”关注我 1. 正确声明线程池 线程池必须手动通过  ThreadPoolExecutor  的构造函数来声明,避免使用 Executors  类创建线程池,会有 OOM 风险。 Executors  返回线程池对象的弊端如下(后文会详细介绍到): FixedThreadPool  和  SingleThreadExecutor  :使用的是无界的  LinkedBlockingQueue ,任务队列最大长度为  Integer.MAX_VALUE ,可能堆积大量的请求,从而导致 OOM。 CachedThreadPool  :使用的是同步队列  SynchronousQueue , 允许创建的线程数量为  Integer.MAX_VALUE  ,可能会创建大量线程,从而导致 OOM。 ScheduledThreadPool  和  SingleThreadScheduledExecutor  : 使用的无界的延迟阻塞队列 DelayedWorkQueue ,任务队列最大长度为  Integer.MAX_VALUE ,可能堆积大量的请求,从而导致 OOM。 说白了就是: 使用有界队列,控制线程创建数量。 除了避免 OOM 的原因之外,不推荐使用  ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览