我用这行代码创建一个ThreadPoolExecutor:

private ExecutorService executor = new ThreadPoolExecutor(5, 10, 120, TimeUnit.SECONDS, new ArrayBlockingQueue(20, true));

然后,我运行25个任务(T01到T25),所以情况是:

>目前正在运行的5个任务(T01到T05)

在队列中等待的20个任务(T06到T25)

当我再添加1个任务(T26)时,当队列已满时,我预计将删除旧任务(T06)以启动(因为未达到MaxPoolSize)并且新任务(T26)被放置在末尾队列.

但在现实生活中,如果Queue已满并且未达到MaxPoolSize,则启动最新任务.

所以我有 …

>目前正在运行的6个任务(T01到T05和T26)

在队列中等待的20个任务(T06到T25)

… 代替 …

>目前正在运行的6个任务(T01到T06)

> 20个任务在队列中等待(T07到T26)

我可以配置ThreadPoolExecutor来获得预期的结果吗?

我应该使用其他课吗?

有关信息,部分ThreadPoolExecutor源代码

public void execute(Runnable command) {

if (command == null)

throw new NullPointerException();

if (poolSize >= corePoolSize || !addIfUnderCorePoolSize(command)) {

if (runState == RUNNING && workQueue.offer(command)) {

if (runState != RUNNING || poolSize == 0)

ensureQueuedTaskHandled(command);

}

else if (!addIfUnderMaximumPoolSize(command))

reject(command); // is shutdown or saturated

}

}

private boolean addIfUnderMaximumPoolSize(Runnable firstTask) {

Thread t = null;

final ReentrantLock mainLock = this.mainLock;

mainLock.lock();

try {

if (poolSize < maximumPoolSize && runState == RUNNING)

t = addThread(firstTask);

} finally {

mainLock.unlock();

}

if (t == null)

return false;

t.start();

return true;

}

谢谢

fifo java_java – 如何保证ThreadPoolExecutor中的FIFO执行顺序相关推荐

  1. hadoop27---netty中handler的执行顺序

    Netty是基于Java NIO的网络应用框架.Netty是一个NIO client-server(客户端服务器)框架,使用Netty可以快速开发网络应用,例如服务器和客户端协议.Netty提供了一种 ...

  2. junit 测试执行顺序_JUnit 5中的测试执行顺序

    junit 测试执行顺序 一般实践认为,自动化测试应能够独立运行且无特定顺序,并且测试结果不应依赖于先前测试的结果. 但是在某些情况下,可以证明特定的测试执行顺序是正确的,尤其是在集成或端到端测试中. ...

  3. JUnit 5中的测试执行顺序

    一般实践认为,自动化测试应能够独立运行且无特定顺序,并且测试结果不应依赖于先前测试的结果. 但是在某些情况下,可以证明特定的测试执行顺序是正确的,尤其是在集成或端到端测试中. 默认情况下,在JUnit ...

  4. mysql关键字使用顺序_MySQL数据库之单表查询中关键字的执行顺序

    MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...

  5. 关于SWITCH中CASE的执行顺序。

    关于SWITCH中CASE的执行顺序其实是一个挺有意思的小问题,带不带break,或者break放置在哪里都会对最终结果产生影响,其实判断最终结果只要找到入口点和最近的一个break就行,然后入口点和 ...

  6. hmi中的宏指令是c语言,HMI中的宏指令编程中的语句执行顺序是?

    HMI中的宏指令编程中的语句执行顺序是? 以威纶通里的例子为例: 4. if结构语句 macro_command main() int k[10], j for j = 0 to 10 k[j] =  ...

  7. mysql数据库查询关键字级别_MySQL数据库之单表查询中关键字的执行顺序

    MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...

  8. 整理:sql server 中sql语句执行顺序

    原文地址为: 整理:sql server 中sql语句执行顺序 SQL Server 查询处理中的各个阶段(SQL执行顺序) SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中 ...

  9. SQL Server 中SQL语句执行顺序

    SQL Server 中SQL语句执行顺序 我们需要对SQL语句的执行顺序了若指掌,才能更好的理解SQL. SQL 不同于与其他编程语言的最明显特征是处理代码的顺序. 在大数编程语言中,代码按编码顺序 ...

最新文章

  1. 刻意练习摆脱简单重复
  2. 如何真正理解用户标签体系?
  3. awk print 的用法
  4. bellmanford队列优化
  5. 重读经典(点云深度学习开山之作):《Deep learning on point clouds for 3D scene understanding》(持续更新中)
  6. 51CTO网站博客改版意见寻求
  7. HTML5 中的 canvas 画布(二)
  8. 微信开发(4) -- 推送微信模板信息到服务号
  9. 55个高质量的Magento主题,助你构建电子商务站点
  10. 速达账套管理员密码查看方法
  11. MySQL Binlog 【ROW】和【STATEMENT】选择(转)
  12. Google Chrome企业咨询服务市场调研报告- 行业发展机遇、市场定位及主要驱动因素
  13. 信息安全系统所需要遵循的基本原则有哪些?
  14. latex公式文字划掉的效果
  15. 自动巡检机器人故障检测系统
  16. 签电子合同的流程是怎样的
  17. css 横向、纵向滚动条
  18. C++序列容器之 vector常见用法总结
  19. [NOI2005]聪聪与可可
  20. 特斯拉向上,蔚来汽车向前

热门文章

  1. 英语口语 week11 Friday
  2. 不该失去的,一块钱也不放弃
  3. 程序员成长的10个阶段
  4. 动态规划 最长上升子序列
  5. 记录腾讯云中矿机病毒处理过程(重装系统了fu*k)
  6. SU suspecfk命令学习
  7. ASP.NET-权限管理五张表
  8. 【HDOJ】【3037】Saving Beans
  9. 原博客文章(Apache初配2008/4/8)
  10. MailMail升级到1.0.2.4