Skip to main content

Executors创建的线程池底层也是调用ThreadPoolExecutor,只不过使用不同的参数、队列、拒绝策略等。
如果使用不当,会造成资源耗尽问题。
直接使用ThreadPoolExecutor让使用者更清楚线程池使用规则,避免风险。

常见问题

  1. newFixedThreadPool和newSingleThreadExecutor
    队列使用LinkedBlockingQueue,队列长度为Integer.MAX_VALUE,可能造成堆积,导致OOM。

  2. newScheduledThreadPool和newCachedThreadPool
    线程池里面允许最大的线程数是Integer.MAX_VALUE,可能会创建过多线程,导致OOM。

相关文章

本文内容转载自小滴课堂