ThreadPoolExecutor学习

在这里插入图片描述
一共100个线程,首先进入核心线程,其次进入队列等待核心线程释放,队列存满后会进入临时线程,临时线程也满了之后会执行拒绝策略。

1、内存溢出oom

队列是数据结构会存在内存中,线程是cpu创建的,影响cpu。所以核心线程数和非核心线程数大了会导致cpu使用率100%,而队列大了会导致内存溢出。所以三种线程池中会导致oom的是具有阻塞队列的newSingleThreadPool和newFixedThreadPool,而newCachedThreadPool中的SyschronousQueue只会存储一个任务,多余的会等待该任务执行后进入,所以不会导致oom。

猜你喜欢

转载自blog.csdn.net/Crush_kylin/article/details/121467468