线程池设计原理

线程池就是存储线程的一个池子,为了避免频繁地创建、删除线程而设,因为线程是操作系统中稀缺的资源,频繁创建和删除会带来增加资源消耗、降低响应速度等影响。


线程池实现原理

ThreadPoolExecutor执行execute()方法的示意图如下:

线程池设计原理_第1张图片
引自并发编程的艺术

当调用excute()方法时,线程池会做以下判断:

1,如果当前正在执行的线程数量少于corePoolSize,则该线程马上被执行
2,如果当前正在执行的线程数量大于或等于corePoolSize,则该线程池将添加到等待队列
3,当等待列队满了,而且当前正在执行的线程数量少于maximunPoolSize,则创建新的线程
4,当等待列队满了,而且当前正在执行的线程数量大于或等于maximunPoolSize,那么线程池就会抛出RejectedExecutionException异常,表示不能再接受新的任务了

你可能感兴趣的:(线程池设计原理)