Это не так.
И тебе это не нужно. Ваш код использует его как:
final TimeZone tz = TimeZone.getTimeZone("GMT");
......
// thread 1 SimpleDateFormat instance
sdf.setTimeZone(tz);
// thread 2 SimpleDateFormat instance
sdf.setTimeZone(tz);
У вас есть два потока, использующих один и тот же часовой пояс, но, поскольку вы не изменяете его, вам не нужно, чтобы он был безопасным для потоков.
Единственное, что вы можете изменить, это идентификатор, но даже тогда вы в порядке, а остальные атрибуты доступны только для чтения.
Единственный способ попасть в неприятности - это изменить идентификатор и кэшировать себя в часовом поясе, если вы всегда получаете его из TimeZone.getTimeZone()
, вы тоже в безопасности, потому что этот метод является поточно-ориентированным .