相关疑难解决方法(0)

列表中这两个同步用法之间的行为有何不同?

List<String> list = new ArrayList<String>();
list.add("a");
...
list.add("z");

synchronized(list) {
    Iterator<String> i = list.iterator();
    while(i.hasNext()) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

List<String> list = new ArrayList<String>();
list.add("a");
...
list.add("z");

List<String> synchronizedList = Collections.synchronizedList(list);

synchronized(synchronizedList) {
    Iterator<String> i = synchronizedList.iterator();
    while(i.hasNext()) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

具体来说,我不清楚synchronized当同步列表提供对列表的线程安全访问时,为什么在第二个实例中需要.

java concurrency synchronized

6
推荐指数
1
解决办法
247
查看次数

标签 统计

concurrency ×1

java ×1

synchronized ×1