基本概念
任务: 就是你自己实现的任务逻辑,一般为Runnable实现类或Callable实现类,不过在线程池中已经被封装成一个FutureTask....在我们向线程池中提交一个任务的时候,会先判断目前线程池中的workerCount是否小于核心线程数,如果小于则将这个任务封装成一个Worker,然后启动一个新线程;如果不小于则将这个任务添加到工作队列...: 因为创建线程需要比较大的开销,并且线程数太多的情况下上下文切换比较频繁,所以我们希望有一种机制来改善它,这就是线程池,改善的核心就是控制线程的数量,通过暴露接口,可以满足用户创建不同场景下的线程池...,提交一个任务时,如果线程池中的线程数没有达到核心线程数,则会创建一个新的线程
maximumPoolSize: 最大线程池,工作队列满了的情况下,如果线程池中的线程数没有达到最大线程数,则会创建一个新线程...(即take),反之亦然
优缺点
适合执行时间比较短的任务,这种情况下,很多线程可以被复用,避免每次都创建大量线程的开销
但在任务执行时间比较长的情况,由于该线程池对线程数没有限制,可能会创建非常多的线程