Dans ce cours, nous verrons pourquoi les collections classiques (
ArrayList,
HashMap) sont dangereuses en environnement multithread, et quelles alternatives thread-safe propose le package
java.util.concurrent :
ConcurrentHashMap,
CopyOnWriteArrayList,
ConcurrentLinkedQueue, des structures basées sur des skip lists et
BlockingQueue. Nous discuterons des opérations atomiques comme
merge,
putIfAbsent,
computeIfAbsent, nous les comparerons à
Collections.synchronizedMap, et nous examinerons des exemples pratiques ainsi que les erreurs typiques (itérateurs à cohérence faible, séquences d’opérations non atomiques, etc.).