Avatar ·

Quand et comment utiliser ThreadLocal en Java pour un travail sûr avec les threads ?

Bonjour à tous ! Je suis développeur Java avec environ un an d'expérience, et je me penche actuellement sur le multithreading. J'ai rencontré un problème : j'ai un serveur web sous Spring Boot qui traite les requêtes dans différents threads. Pour chaque requête, je crée un objet `SimpleDateFormat` pour formater les dates. Je sais que `SimpleDateFormat` n'est pas thread-safe, donc je crée une nouvelle instance à l'intérieur de chaque méthode. Mais cela semble inefficace — créer un objet à chaque fois, puis l'oublier. J'ai entendu parler de `ThreadLocal`, mais je ne comprends pas quand l'utiliser. Par exemple, j'ai ce code : ```java public class DateService { public String formatDate(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(date); } } ``` J'appelle cette méthode depuis différents threads, et parfois j'obtiens des résultats étranges ou des exceptions. J'ai lu qu'on pouvait rendre `SimpleDateFormat` statique et l'envelopper dans un `ThreadLocal`, mais pourquoi est-ce nécessaire ? Ne serait-il pas plus simple de simplement...