java - 在长期服务器应用程序中有效地缓存和更新当前日期

标签 java performance

我有一个长期运行的服务器应用程序,旨在以最少的停机时间运行(例如,24/7 运行仅因维护而停止)。应用程序必须能够每秒处理数千个请求,因此性能是一个问题。

为每个请求提供服务。应用程序的一部分需要知道当前日期(虽然不是时间),并且由于第 3 方 API,它必须存储在 java.util.Date 对象中。

但是,Date 对象的构造成本很高,因此为每个请求创建一个新对象听起来并不明智。

在请求之间共享一个 Date 对象并每天更新一次意味着在启动时只需要创建一个对象(每个服务器工作线程),但是你如何在一种安全的方式?

例如,使用刚好在午夜之后运行的 ScheduledExecutorService 可以增加 Date,但会在混合中引入线程同步:Date对象现在在主线程和 ScheduledExecutorService 产生以运行更新任务的线程之间共享。

同步这 2 个线程会带来另一个性能问题,因为在服务的数千个请求之间可能会争用共享资源(每天执行一次更新线程不太重要,因为它只发生一次一天,不像我们每天要处理的数百万个请求)。

所以,我的问题是确保应用程序始终知道当前日期的最有效方法是什么,即使连续运行数周也是如此?

最佳答案

不要为这种优化而烦恼。它不会产生可衡量的影响。浪费时间。

关于java - 在长期服务器应用程序中有效地缓存和更新当前日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9314828/

相关文章:

javascript - 重新加载外部 javascript 文件的最佳和快速实践?

performance - 性能总是重要的吗?

ios - 衡量强/弱ARC引用的影响-对执行时间的影响

Java keylistener 不执行任何操作,但程序仍然运行

mysql - 我可以降低 MySQL 速度以突出显示哪个查询导致速度缓慢吗?

java - 使用 JDK 1.8,无法扩展 WToolkit 类

Java映射,少数按键冲突,解决方法

java - 欧拉计划 35 : HashSet gives incorrect results

java - 为什么我们不能在 Runnable 中重新抛出 InterruptedException?

java - 我可以在flutter移动应用程序中使用api java 'jena'吗