在将我的运行时升级到Java 7之后,我看到了令人难以置信的缓慢......我的程序将所有时间花在SimpleDateFormat
构造函数上。正如这篇文章中所描述的那样:http://coffeedriven.org/?p=83 TimeZone
代码现在正在检查static synchronized
方法getDefaultInAppContext()
中是否存在应用程序上下文。
对我来说问题是它是Spring Batch文件阅读器代码,它为它读取的每一行创建一个new SimpleDateFormat
对象!
有人为此工作吗?
SimpleDateFormat
一直很慢,现在我知道它在Java 7
甚至更慢。
像@MK一样,我们也会缓存它们。但请注意,它不是线程安全的。我们最终创造了qazxsw poi。
强烈推荐ThreadLocals
,虽然我从未使用它,但我不知道它有日期格式
我们通过改变Spring Batch本身来解决这个问题。目前,更改是在本地副本中,但我已经输入了Jira问题,并希望将我们的修复程序贡献给Spring Batch本身。
更改本身是将SimpleDateFormat的使用从成员变量更改为注入的变量(无论如何看起来更像Spring)。这让我们可以控制它的生命周期。
我很高兴地报告这是在Java 9中发布的JodaTime
中修复的。现在它已经下降到了JDK-8074002。
Joda Time是日期时间计算的最佳日期时间API。请记住,如果您的需求需要不同的时区,则应使用JodaTime API。