Java:CopyOnWriteArrayList vs synchronizedList

CopyOnWritearraylistCollections.synchronizedList(..)什么区别? 什么时候应该优先于另一个。

当读取次数大大超过写入次数时,应使用CopyOnWriteArrayList列表。 这是因为您在每次写入时都要进行不必要的同步以进行昂贵的arrays复制。

例如,当您在multithreading环境中拥有事件侦听器List时,您需要使用CopyOnWriteArrayList ,因为

  • 事件被触发,因此列表经常被迭代
  • 事件监听器很少注册