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 才返回, 或者等待时间超时才返回。

 

posted @ 2019-07-23 17:07  褐色键盘  阅读(132)  评论(0)    收藏  举报