Wann und wie man ThreadLocal in Java für threadsichere Arbeit verwendet?
Hallo zusammen! Ich bin Java-Entwickler mit etwa einem Jahr Erfahrung und beschäftige mich gerade mit Multithreading. Ich bin auf ein Problem gestoßen: Ich habe einen Webserver mit Spring Boot, der Anfragen in verschiedenen Threads verarbeitet. Für jede Anfrage erstelle ich ein `SimpleDateFormat`-Objekt zur Datumsformatierung. Ich weiß, dass `SimpleDateFormat` nicht threadsicher ist, also erstelle ich eine neue Instanz innerhalb jeder Methode.
Aber das scheint ineffizient – jedes Mal ein Objekt zu erstellen und dann wieder zu vergessen. Ich habe von `ThreadLocal` gehört, verstehe aber nicht, wann man es einsetzen sollte. Zum Beispiel habe ich diesen Code:
```java
public class DateService {
public String formatDate(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(date);
}
}
```
Ich rufe diese Methode aus verschiedenen Threads auf und bekomme manchmal seltsame Ergebnisse oder Exceptions. Ich habe gelesen, dass man `SimpleDateFormat` statisch machen und in `ThreadLocal` einwickeln kann, aber warum ist das nötig? Ist es nicht einfacher, einfach...