3

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

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

有人可以解决这个问题吗?

4

4 回答 4

1

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

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

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

于 2012-10-20T01:08:28.313 回答
1

我们通过更改 Spring Batch 本身解决了这个问题。目前,更改位于本地副本中,但我已输入 Jira 问题并希望将我们的修复贡献回 Spring Batch 本身。

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

于 2012-10-27T14:49:53.137 回答
0

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

于 2017-08-01T12:56:07.837 回答
-1

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

于 2012-10-20T06:48:35.147 回答