List list = java.util.Collections.synchronizedList(new ArrayList());
***
synchronized(list) {
//逻辑处理
}
2:
List list = new ArrayList();
...
synchronized(list) {
Iterator i = list.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
请问一下 两段代码 ,有什么不同???
不都是同步的吗???
1 代码 为什么要返回 指定的同步列表? 这样做的好处是什么?
***
synchronized(list) {
//逻辑处理
}
2:
List list = new ArrayList();
...
synchronized(list) {
Iterator i = list.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
请问一下 两段代码 ,有什么不同???
不都是同步的吗???
1 代码 为什么要返回 指定的同步列表? 这样做的好处是什么?
List list = java.util.Collections.synchronizedList(new ArrayList()); 是把list申明成同步的
这个时候list.add()等方法是同步的,就是说add方法被同步,是JVM控制的。2.是说你对list的操作是要同步的,不会有一个以上的线程或方法在操作同时list。
其他线程还可以操作list.add()吧