Java: CopyOnWriteArrayList vs synchronizedList

Quelle est la différence entre CopyOnWritearraylist et Collections.synchronizedList(..) ? Quand faut-il préférer l’un à l’autre.

CopyOnWriteArrayList liste CopyOnWriteArrayList doit être utilisée lorsque le nombre de lectures est nettement supérieur au nombre d’écritures. En effet, vous négociez une synchronisation inutile pour une copie de tableau coûteuse à chaque écriture.

Par exemple, lorsque vous disposez d’une List d’écouteurs d’événements dans un environnement multithread, vous souhaitez utiliser CopyOnWriteArrayList , car

  • les événements sont déclenchés et la liste est donc très souvent itérée
  • les auditeurs d’événements sont rarement inscrits