我有多个线程不断地迭代一个叫做“ArrayList
”的客户端。
当它们断开连接时,我想从列表中删除单个客户端,但我知道这可能会导致并发修改异常。
我应该用Synchronized
块将ArrayList
的所有用法括起来吗?这不是一个好主意吗?
另外,ArrayList
是否可以被多线程读取而没有问题?
谢谢,
(客户端列表由向所有客户端发送数据的UDP线程不断迭代)
发布于 2016-12-18 15:37:55
我可能没有完整的信息,但似乎你总是读,只是偶尔写(更改)到数组列表。在这种情况下,您可能应该考虑使用:
Copy On Write Array List implementation
它应该比使用常规同步更好,因为您不希望在读取操作时同步。
Here是一篇解释使用CopyOnWriteArrayList解决方案的更多pro和-contra的文章。
https://stackoverflow.com/questions/41206348
复制相似问题