gpt4 book ai didi

java - Java执行器的执行策略

转载 作者:行者123 更新时间:2023-11-30 09:11:15 24 4
gpt4 key购买 nike

我正在使用 Executors.newSingleThreadExecutor() javadoc 说: tasks are guaranteed to execute sequentially .所以我认为我的 List<Future<String>> futures = new ArrayList<Future<String>>()将被订购,但事实并非如此。

列表的第一个元素是第三个线程的结果......

    ExecutorService pool = Executors.newSingleThreadExecutor();
List<Future<String>> futures = new ArrayList<Future<String>>();
for (int i=0;i<x.size();i++){
futures.add(pool.submit(new ThreadTest()));
}
pool.shutdown();
pool.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);
String test= futures.get(0).get(); <-- The result of the 3rd thread
String test1 = futures.get(1).get(); <-- The result of the 5th thread
.....

我不明白这个逻辑。

有什么想法吗?

谢谢

最佳答案

Executor 只会并行处理一个任务 - 您是一次提交所有任务 - 这意味着它们对执行队列“可用”。

Executor 将能够选择队列中的任何任务并将其分配给恰好一个运行线程。

关于java - Java执行器的执行策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22200272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com