Executors
创建的线程池底层也是调用ThreadPoolExecutor
,只不过使用不同的参数、队列、拒绝策略等。
如果使用不当,会造成资源耗尽问题。
直接使用ThreadPoolExecutor
让使用者更清楚线程池使用规则,避免风险。
常见问题
newFixedThreadPool和newSingleThreadExecutor:
队列使用LinkedBlockingQueue,队列长度为Integer.MAX_VALUE,可能造成堆积,导致OOM。newScheduledThreadPool和newCachedThreadPool:
线程池里面允许最大的线程数是Integer.MAX_VALUE,可能会创建过多线程,导致OOM。
相关文章
本文内容转载自小滴课堂。