Avatar ·

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