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

问题描述 投票:3回答:4

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

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

有人为此工作吗?

java performance synchronized simpledateformat
4个回答
1
投票

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

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

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


1
投票

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

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


0
投票

我很高兴地报告这是在Java 9中发布的JodaTime中修复的。现在它已经下降到了JDK-8074002


-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.