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 代码 为什么要返回 指定的同步列表? 这样做的好处是什么?

解决方案 »

  1.   

    有点不一样
    List list = java.util.Collections.synchronizedList(new   ArrayList()); 是把list申明成同步的
    这个时候list.add()等方法是同步的,就是说add方法被同步,是JVM控制的。2.是说你对list的操作是要同步的,不会有一个以上的线程或方法在操作同时list。
      

  2.   

    被synchronized修饰的方法,当执行这个方法的过程中,当前这个对象被锁定
    其他线程还可以操作list.add()吧