首页 > 编程 > Java > 正文

Java 7之多线程线程池 - 线程池原理(2)

2019-11-06 06:51:54
字体:
来源:转载
供稿:网友

线程池能够复用线程,减少线程创建,销毁,恢复等状态切换的开销,提高程序的性能。一个线程池管理了一组工作线程,同时它还包括了一个用于放置等待执行的任务的队列。

ThreadPoolExecutor类中定义了一些与线程状态与活动线程数相关的一些变量,如下:

[java] view plain copyPRint?在CODE上查看代码片private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));     // 将整型的24位分为高3位和低29位,高3位表示线程池的状态,低29位表示活动的线程数     private static final int COUNT_BITS = Integer.SIZE - 3;     private static final int CAPACITY   = (1 << COUNT_BITS) - 1;// 29位能表示的最大二进制整数,也就是活动线程数       // 高3位数值代表的线程池状态     private static final int RUNNING    = -1 << COUNT_BITS;    // running 线程池能接受新任务     private static final int SHUTDOWN   =  0 << COUNT_BITS;    // shutdown 线程池不再接受新任务     private static final int STOP       =  1 << COUNT_BITS;    // stop 线程池不再接受新任务,不再执行队列中的任务,而且要中断正在处理的任务     private static final int TIDYING    =  2 << COUNT_BITS;    // tidying 线程池所有任务均已终止     private static final int TERMINATED =  3 << COUNT_BITS;    // terminated terminated()方法执行结束  
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表