为什么用线程池,优势

线程池如何使用?
架构说明


编码实现
了解

重点
- Executor.newFixThreadPool(int) - 执行长期任务。  
- Executor.newSingleThreadExecutor - 一个任务。  
- Executor.newCachThreadPool() - 执行很多任务。  
- 案例 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21- /** 
 * @desc 线程池demo
 * @Author xw
 * @Date 2019/8/23
 */
 public class MyThreadPoolDemo {
 public static void main(String[] args) {
 // ExecutorService threadPool = Executors.newFixedThreadPool(5); // 固定线程数
 // ExecutorService threadPool = Executors.newSingleThreadExecutor(); // 单池
 ExecutorService threadPool = Executors.newCachedThreadPool();
 try {
 for (int i = 1; i <= 10; i++) {
 threadPool.execute(() -> {
 System.out.println(Thread.currentThread().getName() + "\t 办理业务");
 });
 }
 } finally {
 threadPool.shutdown();
 }
 }
 }
ThreadPoolExecutor
| 1 | /** | 
线程池的几个重要参数介绍?
- corePoolSize:线程池中的常驻核心线程数
- maxnumPoolSize:线程池能够容纳同时执行的最大线程数,此值必须大于等于1
- keepAliveTime:多余的空闲线程的存活时间。当线程池数量超过corePoolSize时,当空闲时间达到keepAliveTime值时,多余空闲线程会被销毁直到只剩下corePoolSize个线程为止
- unit:KeepAliveTime单位
- workQueue:任务队列,被提交但尚未被执行的任务。
- threadFactory:表示生成线程池中工作线程的线程工厂,用于创建线程一般默认的即可。
- handler:拒绝策略,表示当队列满了并且工作线程大于等于线程池的最大线程数(maxnumPoolSize)
说说线程池的底层原理
