gpt4 book ai didi

java - 并行处理 Set

转载 作者:行者123 更新时间:2023-12-01 13:11:20 26 4
gpt4 key购买 nike

我有一组客户端,以及一个我想向他们广播的事件。更准确地说,我使用 CopyOnWriteArraySet 来避免 ConcurrentModificationException

一切运行良好,但我开始遇到大量客户端的性能问题。

您能建议一种并行服务客户的方法吗?

广播循环现在看起来基本上是这样的:

for (Client client : clients) {
sendTo(client, event);
}

最佳答案

使用 Java 8,您可以将循环替换为:

clients.parallelForEach(client -> sendTo(client, event));

使用 Java 7,您将需要手动编写代码。第一个简单版本如下所示:

private final ExecutorService executor = new FixedThreadPool(N_THREADS);

private void send(Set<Client> clients, final Event event) {
for (Client client : clients) {
final Client c = client;
executor.submit(new Runnable() { public void run() { sendTo(c, event); }});
}
}

关于java - 并行处理 Set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22843646/

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