Я услышал, что Java 8 обеспечивает много утилит относительно параллельных вычислений. Поэтому я задаюсь вопросом, что самый простой путь состоит в том, чтобы параллелизировать данный для цикла?
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);
}
}
Простой пример к copy'n'paste (примеры выше используют класс Server
, который является пользовательским классом, записанным OP):
import java.io.Console;
import java.util.ArrayList;
ArrayList<String> list = new ArrayList<>();
list.add("Item1");
list.add("Item2");
list.parallelStream().forEach((o) -> {
System.out.print(o);
});
Консоль производится. Порядок мог возможно варьироваться, поскольку все выполняется параллельно:
Item1
Item2
.parallelStream()
метод был представлен в Java v8
. Этот пример был протестирован с JDK v1.8.0_181
.