If delegates is a CopyOnWriteArrayList (instead of just an ArrayList), you should be able to do this.delegates.addAllAbsent(delegates) here without the synchronization.