我用这行代码创建一个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. SAP PM 初级系列23 - IW22 事务代码里创建维修工单
  2. addeventlistener事件第三个参数_简析JavaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序...
  3. python odoo_odoo开发学习 -- Python2 or Python3 ?
  4. 设置centos上的redis可以被访问
  5. 用Fiddler调试localhost
  6. nginx引入自定义的配置文件
  7. 每位初级开发都应该知道的六件大事
  8. JAVA中的二叉树(数据结构)
  9. SQL控制权力(DNC)与日志
  10. 奥沙利文独家授权数字藏品正式发售 线上线下搭配多款专属福利
  11. 虚拟化 : VT-x VT-d VT-c的分别
  12. PS从入门到精通第2节——揭开PS的神秘面纱
  13. 手机捕鱼服务器维护,手机捕鱼游戏服务器
  14. fetch请求cookie设置
  15. 安装MinGW和MSYS
  16. Delphi使用ADOconnection连接mysql数据库时的Connectionstring问题
  17. html window 网络邻居,解决Windows7系统局域网网上邻居看不到其它同事电脑方法
  18. python 三元表达式_Python三元表达式
  19. linux define路径,linux架设BT Tracker服务器小记
  20. 2021-06-23 峰终定律和上瘾模型

热门文章

  1. codeforces 41A-C语言解题报告
  2. Goobuntu:谷歌的内部桌面系统
  3. h.264视频文件封装
  4. HTTP 协议是无状态协议,怎么理解
  5. JAVA 数组元素的反转
  6. mysql 备份脚本
  7. HDU 5741 Helter Skelter(构造法)
  8. ubuntu入门知识
  9. JavaScript中的原型继承原理
  10. TinyXML学习记录及整理