线程池的实现:
Executors类:线程池的工具类,通过调用方法返回不同类型的线程池对象
1、public static ExecutorService newCachedThreadPool(); 创建一个(理论上)没有上限的线程池
2、public static ExecutorService newFixedThreadPool(int nThreads); 创建有上限的线程池
1 | ExecutorService pool = Executors.newCachedThreadPool(); |
自定义线程池!
ThreadPoolExecutor
1 | ThreadPoolExecutor pool = new ThreadPoolExecutor( |
核心参数(7个)
1、核心线程数
2、最大线程数
3、空闲线程最大存活时间(等待多久没有任务就销毁)
4、时间单位
5、任务队列
6、创建线程工厂
7、拒绝策略
拒绝策略(4个)
1、ThreadPoolExecutor.AbortPolicy 默认:丢弃任务并抛出RejectedExecutionExecption异常
2、ThreadPoolExecutor.DiscardPolicy 丢弃任务 不抛异常 不推荐
3、ThreadPoolExecutor.DiscardOldestPolicy 丢弃队列中等待最久的任务,然后把当前任务加入队列中
4、ThreadPoolExecutor.CallerRunsPolicy 调用任务的run()方法绕过线程池直接执行