线程池的优点:减少每次启动、销毁线程的损耗
java标准库中提供了线程池
ExecutorService是一个接口,不能够直接实例化,通过Executors这个类的静态方法来实现实例化
Executors本质上是ThreadPoolExecutor类的封装
newFixedThreadPool:创建固定线程数量的线程池
newCachedThreadPool:创建线程数量动态增长的线程池(按需创建)
newSingleThreadExecutor:创建中包含单个线程的线程池
实现线程池
int corePoolSize:核心线程数
int maximumPoolSize:最大线程数
long keepAliveTime:保持存活时间
TimeUnit unit:数值单位
BlockingQueue<Runnable> workQueue:阻塞队列,用来组织任务
ThreadFactory threadFactory:线程工厂,用来创建线程的一个辅助类
RejectedExecutionHandler handler:线程池的拒绝服务策略:
(回想老师上课用直播和上课举的例子)
①AbortPolicy:如果一个线程拒绝这个任务就直接抛异常
②CallerRunsPolicy:添加的线程自己负责添加执行这个任务
③DiscardOldestPolicy:丢弃最古老的任务,即队首的线程
④DiscardPolicy:丢弃最新的任务