jetty中的QueuedThreadPool线程池

1.用64位的AtomicLong来表示启用的线程数及空闲的线程数

(1)高32位表式启用的线程数(Integer.MIN_VALUE表示线程池停止),低32位表式空闲的线程数

  (2) 每新建一个线程,启用的线程数加1,空闲的线程数加1

  (3)提交一个任务空闲的线程数减1,执行完一个任务空闲的线程数加1

  (4)即低32位可以为负数,绝对值表示阻塞队列中任务的数量

2.QueuedThreadPool与ThreadPoolExecutor的区别

(1) QueuedThreadPool只有两个状态,用Integer.MIN_VALUE表示线程池停止,而ThreadPoolExecutor有5种状态

(2)QueuedThreadPool中任务先添加到阻塞队列中,ThreadPoolExecutor中的任务可直接给核心线程执行

(3)QueuedThreadPool中当空闲线程不够时,直接创建新的线程,而ThreadPoolExecutor要等到阻塞队列满的时候才创建新的线程

(4)QueuedThreadPool中核心线程是不能回收的,而ThreadPoolExecuor中可以设置回收核心线程

(5)QueuedThreadPool中非核心线程的回收是按idleTimeout间隔一个个回收的(即串行),而ThreadPoolExecutor中非核心线程是按每个线程poll(keepAliveTime,TimeUnit.NANOSECONDS)来回收的(即并行)

(6)QueuedThreadPool无法统计已完成的任务数量

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值