Java 7 Calendar.getInstance, TimeZone.getTimeZone синхронизировались и работали медленно, есть какие-нибудь обходные пути?

После обновления моей среды выполнения до Java 7 я вижу невероятную медлительность ... и моя программа проводит все свое время вSimpleDateFormat конструктор. Как описано в большом посте здесь:http://coffeedriven.org/?p=83 TimeZone код теперь проверяет наличие контекста приложения вstatic synchronized метод.getDefaultInAppContext()

Проблема для меня в том, что этоВесенняя партия код для чтения файлов, который создаетnew SimpleDateFormat Объект для каждой строки, которую он читает!

Кто-нибудь нашел способ обойти это?

 MK.20 окт. 2012 г., 03:03
Мы добавили код для их кэширования.

Ответы на вопрос(4)

Joda Time - лучший API для работы с датой и временем. Помните, что если вашим требованиям нужен другой часовой пояс, вам следует использовать JodaTime API. "

 Kumar20 окт. 2012 г., 08:58
@JonSkeet; Я неT означает, что стандартный. библиотека не способна, но здесь я имею в виду, что в JOda Time API много встроенных расширенных функций для простоты и экономии времени. Извините за мою работудолжен", :)
 Jon Skeet20 окт. 2012 г., 08:54
должен" Слишком сильное слово здесь. Я, конечно, согласен с тем, что Joda Time гораздо приятнее API, но этоне так, как стандартные библиотеки неПоддержка различных часовых поясов.
Решение Вопроса

Мы решили это, внеся изменения в саму Spring Batch. На данный момент изменения в локальной копии, но яМы попали в проблему Jira и надеемся внести свой вклад в саму Spring Batch.

Само изменение состоит в том, чтобы изменить использование SimpleDateFormat с переменной-члена на внедренную (которая в любом случае кажется более похожей на Spring). Это позволяет нам контролировать его жизненный цикл.

SimpleDateFormat всегда был медленным, теперь я узнаю, что это еще медленнее.Java 7

Как и @MK, мы также кешируем их. Но обратите внимание, что это непоточно, Мы закончили создавать.ThreadLocals

JodaTime Настоятельно рекомендуется, хотя я никогда не использовал его, и я нене знаю, имеет форматирование даты

 Brian Tarbox20 окт. 2012 г., 13:21
Проблема в том, что яя использую Spring Batch и вызов формата даты там, так что я могуЯ не могу перейти на JodaTime.
 Miserable Variable22 окт. 2012 г., 19:20
Вы можете быть в состоянии использоватьAspectJ развернуть производственный аспект для использованияJodaTime вместоSimpleDateFormat или просто использовать кэшированныйSimpleDateFormat объекты

Я рад сообщить, что это было исправлено вJDK-8074002 который поставляется в Java 9. Это 'теперь до.#clone()

Ваш ответ на вопрос