Java 8:并行FOR循环
我听说Java 8提供了许多有关并发计算的实用程序。因此,我想知道并行化给定for循环的最简单方法是什么?
public static void main(String[] args){
Set<Server> servers = getServers();
Map<String, String> serverData = new ConcurrentHashMap<>();
for (Server server : servers)
{
String serverId = server.getIdentifier();
String data = server.fetchData();
serverData.put(serverId, data);
}
}
回答:
在流上阅读,它们都是新的流行。
特别注意并行性:
“具有显式for循环的处理元素本质上是串行的。流通过将计算重新格式化为聚合操作的流水线,而不是作为对每个单独元素的命令性操作来促进并行执行。所有流操作都可以串行或并行执行。
”
综上所述,没有并行的for循环,它们本质上是串行的。但是,流可以完成这项工作。看下面的代码:
Set<Server> servers = getServers(); Map<String, String> serverData = new ConcurrentHashMap<>();
servers.parallelStream().forEach((server) -> {
serverData.put(server.getIdentifier(), server.fetchData());
});
以上是 Java 8:并行FOR循环 的全部内容, 来源链接: utcz.com/qa/406462.html