14

What is the difference between CopyOnWritearraylist and Collections.synchronizedList(..)? When should one be preferred over the other.

Bozho
  • 588,226
  • 146
  • 1,060
  • 1,140
DeeEs
  • 143
  • 1
  • 4

1 Answers1

18

CopyOnWriteArrayList list should be used when the number of reads vastly outnumber the number of writes. This is because you are trading unnecessary synchronization for expensive array copying on each write.

For example, when you have a List of event listeners in a multi-threaded environment, you'd want to use CopyOnWriteArrayList, because

  • events are fired, and hence the list is iterated very often
  • event listeners are registered rarely
Bozho
  • 588,226
  • 146
  • 1,060
  • 1,140
  • Although in slightly different context, but how is CopyOnWriteArrayList different than an unmodifiable List? – AKS Nov 29 '14 at 16:33