我有多个线程不断迭代ArrayList
被称为"客户端"。
当他们断开连接时,我想从列表中删除单个客户端,但我知道它可能导致并发修改异常。
我是否应该将ArrayList
的{{1}}所有用法包围起来,或者这不是一个好主意?
多个线程也可以没有问题地读取Synchronized
吗?
谢谢,
(客户端列表不断由UDP线程迭代,向所有客户端发送数据)
答案 0 :(得分:2)
我可能没有完整的信息,但似乎你总是阅读并且有时只写(更改)到数组列表。在这种情况下,您可能应该考虑使用:
Copy On Write Array List implementation
它应该比使用常规同步更好,因为您不希望在读取操作上获得同步。
Here是一篇文章,解释了使用CopyOnWriteArrayList解决方案的更多原则和方法。