MRa*_*ser 19 java collections multithreading iterator thread-safety
我们都知道在使用时Collections.synchronizedXXX(例如synchronizedSet())我们获得了底层集合的同步"视图".
但是,这些包装器生成方法的文档指出,在使用迭代器迭代集合时,我们必须在集合上显式同步.
您选择哪个选项来解决此问题?
我只能看到以下方法:
iterator()CopyOnWriteArrayList/ Set)并且作为一个额外的问题:当使用同步视图时 - 使用foreach/Iterable线程安全吗?
Jon*_*eet 26
你已经真的回答了你的奖金问题:不,使用增强的for循环是不安全的 - 因为它使用了迭代器.
至于哪种方法最合适 - 它实际上取决于你的背景:
CopyOnWriteArrayList可能是最合适的.取决于您的访问模式.如果您具有较低的并发性和频繁写入,则1将具有最佳性能.如果您具有高并发和不频繁的写入,则3将具有最佳性能.选项2在几乎所有情况下都会表现不佳.
foreach电话iterator(),所以完全相同的事情适用.
| 归档时间: |
|
| 查看次数: |
29620 次 |
| 最近记录: |