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...