Java并发编程之美 第八章 java并发包中线程池ThreadPoolExecutor原理探究
线程池主要解决两个问题:
1 执行大量异步任务时,线程池能提供较好的性能
2 一个资源限制和管理手段
线程池状态含义:
1 running:接受新任务并处理阻塞队列里的任务
2 shoudown:拒绝新任务但是处理阻塞队列里的任务
3 stop: 拒绝新任务并且抛弃阻塞队列里的任务,同时会中断正在处理的任务。
4 tidying: 所有任务都执行完(包含阻塞队列里面的任务)后当前线程池活动线程 数为 0, 将要调用 terminated 方法
5 terminated:终止状态。 terminated 方法调用完成以后的状态。
线程池参数:
1 corePoolSize :线程池核心线程个数。
2 workQueue :用于保存等待执行的任务的阻 塞 队列,
3 maximunPoolSize : 线程池最大线程数量。
4 ThreadFactory :创建线程的工厂。
5 RejectedExecutionHandler :饱和策略, 当队列满并且线程个数达到 maximunPoolSize 后采取的策略,
6 keeyAliveTime :存活时间 。 如果当前线程池中的线程数量比核心线程数量多,并且 是闲置状态, 则这些闲置的线程能存活的最大时间。
7 TimeUnit : 存活时间的时间单位。
shutdown:线程池不接受新的任务了,但是工作队列里面的任务还是要执行。方法立即返回
shutdownNow: 线程池就不会再接受新的任务 了,并且会丢弃工作队列 里面的任务, 正在执行的任务会被中断, 该方法会立刻返回
awaitTermination:当前线程会被阻塞,直到线程池状态变为 TERMINATED 才返回, 或者等待时间超时才返回。

浙公网安备 33010602011771号