快捷搜索:  汽车  科技

executor和线程池是什么关系(使用Executors声明线程池)

executor和线程池是什么关系(使用Executors声明线程池)} //do nothing try { Thread.sleep(10000); } catch (InterruptedException e) {

隐患: 造成JVM OOM

ExecutorService executor = Executors.newFixedThreadPool(10);

for (int i = 0; i < Integer.MAX_VALUE; i ) {

executor.execute(() -> {

try {

Thread.sleep(10000);

} catch (InterruptedException e) {

//do nothing

}

});

}

executor和线程池是什么关系(使用Executors声明线程池)(1)

Executors.newFixedThreadPool

new FixedThreadPool线程池的核心线程数是固定的,

它使用了近乎于无界的LinkedBlockingQueue阻塞队列。

当核心线程用完后,任务会入队到阻塞队列,如果任务执行的时间比较长,没有释放,

会导致越来越多的任务堆积到阻塞队列,最后导致机器的内存使用不停的飙升,

造成JVM OOM。

猜您喜欢: