• int corePoolSize :线程池中的核心线程数
  • int maximumPoolSize :线程池中的最大线程数
  • long keepAliveTime :除核心线程数以外,其他空闲线程最大存活的时间
  • TimeUnit unit :存活时间的单位
  • BlockingQueue<Runnable> workQueue :存放任务的队列
  • ThreadFactory threadFactory:线程池生产线程的工厂类
  • RejectedExecutionHandler handler:当队列已满线程池拒绝任务的策略
  • boolean allowCoreThreadTimeOut :是否允许核心线程超时(这个为true,当核心线程空闲到keepAliveTime后,会被回收。  为false时,核心线程空闲会一直阻塞在队列上等待新任务)

 

二、JDK的线程池的状态

运行状态

状态描述

线城池状态的表示

RUNNING

能接受新提交的任务,并且也能处理阻塞队列中的任务;

RUNNING    = -1 << 29

SHUTDOWN

关闭状态,不再接受新提交的任务,但却可以继续处理阻塞队列中已保存的任务。

 
SHUTDOWN   =  0 << 29

STOP

不能接受新任务,也不处理队列中的任务,会中断正在处理任务的线程。

 
STOP       =  1 << 29

TIDYING

如果所有的任务都已终止了,workerCount (有效线程数) 为0

 
TIDYING    =  2 << 29

TERMINATED

在terminated() 方法执行完后进入该状态

 
TERMINATED =  3 << 29

【java多线程】jdk的线程池

 

 

RUNNING      -1<<29==>11100000 00000000 00000000 00000000 

SHUTDOWN  0<<29==>00000000 00000000 00000000 00000000

STOP           1<<29 ==>00100000  00000000  00000000  00000000

TIDYING       2<<29 ==>01000000   00000000   00000000   00000000 

TERMINATED 3<<29 ==>01100000 00000000 00000000 00000000

 

CAPACITY (1<<29)-1 ==>00011111 11111111 11111111 11111111

 

//这个代表线程的控制器:int类型为32位。 其中高3位表示线程池的状态,低29位表示线城池中的线程数量。

【java多线程】jdk的线程池
private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));
View Code

相关文章: