In questa lezione vedremo perché le collezioni normali (
ArrayList,
HashMap) sono pericolose in un ambiente multithread e quali alternative thread-safe offre il pacchetto
java.util.concurrent:
ConcurrentHashMap,
CopyOnWriteArrayList,
ConcurrentLinkedQueue, strutture basate su skip list e
BlockingQueue. Discuteremo operazioni atomiche come
merge,
putIfAbsent,
computeIfAbsent, confronteremo con
Collections.synchronizedMap, analizzeremo esempi pratici ed errori tipici (iteratori debolmente consistenti, sequenze di operazioni non atomiche, ecc.).