线程池就是存储线程的一个池子,为了避免频繁地创建、删除线程而设,因为线程是操作系统中稀缺的资源,频繁创建和删除会带来增加资源消耗、降低响应速度等影响。
线程池实现原理
ThreadPoolExecutor执行execute()方法的示意图如下:
当调用excute()方法时,线程池会做以下判断:
1,如果当前正在执行的线程数量少于corePoolSize,则该线程马上被执行
2,如果当前正在执行的线程数量大于或等于corePoolSize,则该线程池将添加到等待队列
3,当等待列队满了,而且当前正在执行的线程数量少于maximunPoolSize,则创建新的线程
4,当等待列队满了,而且当前正在执行的线程数量大于或等于maximunPoolSize,那么线程池就会抛出RejectedExecutionException异常,表示不能再接受新的任务了