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