gpt4 book ai didi

Java跨线程并发修改

转载 作者:行者123 更新时间:2023-12-02 03:09:52 25 4
gpt4 key购买 nike

我有多个线程不断迭代一个名为“clients”的ArrayList

当他们断开连接时,我想从列表中删除单个客户端,但我知道这可能会导致并发修改异常。

我应该用 Synchronized block 包围 ArrayList 的所有使用吗?

另外,ArrayList 可以被多个线程读取而没有问题吗?

谢谢

(客户端列表由向所有客户端发送数据的 UDP 线程不断迭代)

最佳答案

我可能没有完整的信息,但似乎您总是读取数组列表,只是有时写入(更改)数组列表。在这种情况下,您可能应该考虑使用:

Copy On Write Array List implementation

它应该比使用常规同步更好,因为您不想在读取操作上同步。

Here这篇文章解释了使用 CopyOnWriteArrayList 解决方案的更多优点和缺点。

关于Java跨线程并发修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206348/

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