Существует 3 сценария использования помощника класса , такого как SimpleDateFormat в многопоточном коде, который лучше всего использовать ThreadLocal
Сценарии
1- Использование общего объекта с помощью механизма блокировки или синхронизации , который делает приложение медленным
2- Использование в качестве локального объекта внутри метода
В этом сценарии, если у нас есть 4 потока , каждый из которых вызывает метод 1000 раз, тогда мы имеем
4000 SimpleDateFormat объект создан и ожидает GC, чтобы стереть их
3- Использование ThreadLocal
если у нас есть 4 потока и мы дали каждому потоку один экземпляр SimpleDateFormat
таким образом, у нас есть 4 потока , 4 объекта из SimpleDateFormat.
Нет необходимости в механизме блокировки, создании и уничтожении объектов. (Хорошая временная сложность и пространственная сложность)