Java 7 Calendar.getInstance,TimeZone.getTimeZone得到同步和缓慢,任何解决方法?

在将我的运行时升级到Java 7后,我看到了令人难以置信的缓慢……我的程序将所有时间都花在SimpleDateFormat构造函数中。 正如一篇很棒的post所述: http : //coffeedriven.org/? TimeZone = 83 , TimeZone代码现在正在检查static synchronized方法getDefaultInAppContext()是否存在应用程序上下文。

对我来说问题是它是Spring Batch文件阅读器代码,它为它读取的每一行创建一个new SimpleDateFormat对象!

有人为此工作吗?

SimpleDateFormat一直很慢,现在我知道它在Java 7更慢。

像@MK一样,我们也会缓存它们。 但请注意,它不是线程安全的 。 我们最终创建了ThreadLocals

强烈推荐JodaTime ,虽然我从未使用它,但我不知道它有日期格式

我们通过改变Spring Batch本身来解决这个问题。 目前,更改是在本地副本中,但我已经输入了Jira问题,并希望将我们的修复程序贡献给Spring Batch本身。

更改本身是将SimpleDateFormat的使用从成员变量更改为注入的变量(无论如何看起来更像Spring)。 这让我们可以控制它的生命周期。

我很高兴地报告这是在Java 9中发布的JDK-8074002中修复的。现在归结为#clone()

Joda Time是日期时间计算的最佳日期时间API。 请记住,如果您的需求需要不同的时区,则应使用JodaTime API。