Proprio qualche giorno fa mi trovavo a parlare della proprietà lenient della classe SimpleDateFormat, cioè un booleano che, se lasciato al valore di default, permette di riconoscere come “date ben formate” giorni come il 31 febbraio 2012 o cose del genere. Ma le insidie dietro questa classe sono altre, e molto più gravi.
Leggendo la documentazione della classe si trova il seguente commento:
Date formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.
Ebbene, quelli della Oracle consigliano di creare delle istanze separate della classe per ogni thread che la usa. Ma cosa succede se non si segue questo consiglio ?
Continua a leggere