【发布时间】:2013-08-02 09:30:48
【问题描述】:
我在 dos.oracle.com 上找到了这个
public static List synchronizedList(List list)
返回由指定支持的同步(线程安全)列表 列表。为了保证串行访问,至关重要的是所有 通过返回的列表完成对后备列表的访问。 用户必须手动同步返回的 迭代时列出:
List list = Collections.synchronizedList(new ArrayList());
...
synchronized(list) {
Iterator i = list.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
我的问题是:如果Collections.synchronizedList(); 应该返回一个已经同步的列表,为什么我必须同步列表来迭代它?
我只是在两个线程中访问列表:一个线程只是添加,另一个线程获取和删除。对于这种情况,您建议使用哪些其他类?
感谢阅读。
【问题讨论】:
标签: java multithreading arraylist synchronization