fifo java_java – 如何保证ThreadPoolExecutor中的FIFO执行顺序
我用这行代码创建一个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执行顺序相关推荐
- hadoop27---netty中handler的执行顺序
Netty是基于Java NIO的网络应用框架.Netty是一个NIO client-server(客户端服务器)框架,使用Netty可以快速开发网络应用,例如服务器和客户端协议.Netty提供了一种 ...
- junit 测试执行顺序_JUnit 5中的测试执行顺序
junit 测试执行顺序 一般实践认为,自动化测试应能够独立运行且无特定顺序,并且测试结果不应依赖于先前测试的结果. 但是在某些情况下,可以证明特定的测试执行顺序是正确的,尤其是在集成或端到端测试中. ...
- JUnit 5中的测试执行顺序
一般实践认为,自动化测试应能够独立运行且无特定顺序,并且测试结果不应依赖于先前测试的结果. 但是在某些情况下,可以证明特定的测试执行顺序是正确的,尤其是在集成或端到端测试中. 默认情况下,在JUnit ...
- mysql关键字使用顺序_MySQL数据库之单表查询中关键字的执行顺序
MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...
- 关于SWITCH中CASE的执行顺序。
关于SWITCH中CASE的执行顺序其实是一个挺有意思的小问题,带不带break,或者break放置在哪里都会对最终结果产生影响,其实判断最终结果只要找到入口点和最近的一个break就行,然后入口点和 ...
- hmi中的宏指令是c语言,HMI中的宏指令编程中的语句执行顺序是?
HMI中的宏指令编程中的语句执行顺序是? 以威纶通里的例子为例: 4. if结构语句 macro_command main() int k[10], j for j = 0 to 10 k[j] = ...
- mysql数据库查询关键字级别_MySQL数据库之单表查询中关键字的执行顺序
MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...
- 整理:sql server 中sql语句执行顺序
原文地址为: 整理:sql server 中sql语句执行顺序 SQL Server 查询处理中的各个阶段(SQL执行顺序) SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中 ...
- SQL Server 中SQL语句执行顺序
SQL Server 中SQL语句执行顺序 我们需要对SQL语句的执行顺序了若指掌,才能更好的理解SQL. SQL 不同于与其他编程语言的最明显特征是处理代码的顺序. 在大数编程语言中,代码按编码顺序 ...
最新文章
- 刻意练习摆脱简单重复
- 如何真正理解用户标签体系?
- awk print 的用法
- bellmanford队列优化
- 重读经典(点云深度学习开山之作):《Deep learning on point clouds for 3D scene understanding》(持续更新中)
- 51CTO网站博客改版意见寻求
- HTML5 中的 canvas 画布(二)
- 微信开发(4) -- 推送微信模板信息到服务号
- 55个高质量的Magento主题,助你构建电子商务站点
- 速达账套管理员密码查看方法
- MySQL Binlog 【ROW】和【STATEMENT】选择(转)
- Google Chrome企业咨询服务市场调研报告- 行业发展机遇、市场定位及主要驱动因素
- 信息安全系统所需要遵循的基本原则有哪些?
- latex公式文字划掉的效果
- 自动巡检机器人故障检测系统
- 签电子合同的流程是怎样的
- css 横向、纵向滚动条
- C++序列容器之 vector常见用法总结
- [NOI2005]聪聪与可可
- 特斯拉向上,蔚来汽车向前