gpt4 book ai didi

Java 迭代器并发

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:56:36 24 4
gpt4 key购买 nike

我正在尝试并发循环 Java 迭代器,但在寻找执行此操作的最佳方法时遇到了问题。

这是我没有尝试同时做任何事情的地方。

Long l;    
Iterator<Long> i = getUserIDs();

while (i.hasNext()) {
l = i.next();

someObject.doSomething(l);
anotheObject.doSomething(l);
}

我在非迭代器对象上所做的事情之间应该没有竞争条件,所以我不太担心。我只是想通过不按顺序执行迭代器来加快循环迭代器所需的时间。

提前致谢。

最佳答案

一种解决方案是使用执行程序来并行化您的工作。

简单的例子:

ExecutorService executor = Executors.newCachedThreadPool();

Iterator<Long> i = getUserIDs();
while (i.hasNext()) {
final Long l = i.next();

Runnable task = new Runnable() {
public void run() {
someObject.doSomething(l);
anotheObject.doSomething(l);
}
}

executor.submit(task);
}

executor.shutdown();

这将为迭代器中的每个项目创建一个新线程,然后由该线程完成工作。您可以通过在 Executors 类上使用不同的方法来调整使用的线程数,或者根据您的需要分割工作(例如,为每个方法使用不同的 Runnable电话)。

关于Java 迭代器并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9455280/

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