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

时间:2012-10-20 01:01:25

标签: java performance synchronized simpledateformat

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

问题在于,Spring Batch文件阅读器代码为其读取的每一行创建了一个new SimpleDateFormat对象!

任何人都可以解决这个问题吗?

4 个答案:

答案 0 :(得分:1)

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

与@MK一样,我们也会缓存它们。但请注意,它不是 threadsafe 。我们最终创建了ThreadLocals

强烈推荐

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我很高兴地报告这已在Java 9中发布的JDK-8074002中得到修复。现在已降至#clone()

答案 3 :(得分:-1)

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