集合上的线程安全迭代
2022-09-02 12:04:28
我们都知道,当使用(例如)时,我们会得到底层集合的同步“视图”。Collections.synchronizedXXX
synchronizedSet()
但是,这些包装器生成方法的文档指出,在使用迭代器迭代集合时,我们必须显式同步集合。
您选择哪个选项来解决此问题?
我只能看到以下几种方法:
- 按照文档所述进行操作:在集合上同步
- 在调用之前克隆集合
iterator()
- 使用迭代器是线程安全的集合(我只知道 /Set)
CopyOnWriteArrayList
作为一个奖励问题:当使用同步视图时 - 使用foreach/Iterable线程安全吗?