keepAliveTime:设置的是线程的存活时间
workQueue:设置工作队列,常见类型如下
添加线程规则:
自动创建线程池的常用方式
FixedThreadPool:输入核心线程数,最大线程数相同,生存时间为0,不需要因为不会杀进程
CachedThreadPool:核心线程数为0,最大线程为最大,空闲线程等待工作时间为60ns,超过这个时间就会杀线程。
ScheduledThreadPool:输入核心线程数,最大线程为最大,空闲线程等待工作时间为0,会一直进行线程创建,耗费资源
SingleThreaded:1个线程,最大线程数也是1,一直用这一个线程进行处理。
手动创建时,注意参数的设置
停止线程池的方法
1.直接停止线程,不过还是会执行里面的未执行完的线程
2.判断线程是否停止
3.判断线程停止后等待池中的线程是否运行完成。
4.设置一段时间,然后检测在这段时间内,线程池中所运行的线程是否执行完成。
5.立刻关闭线程池,其中对在队列中等待的线程进行一个返回。
当任务太多时,线程池会拒绝
1.直接抛出异常,控制台会爆出错误
2.将新添加的任务直接抛弃。
3.丢弃老的任务
4.返回给任务的提交者,让他来执行
线程池的实现原理