java - Java 8 中线程的 TimeZone.setDefault

标签 java

我们当前使用 TimeZone.setDefault 来设置线程的默认时区。 我知道在 Java 8 中调用此方法会设置 JVM 的默认时区。

有人对如何在 Java 8 中设置线程的默认时区有建议吗?而无需重新编写大量代码?

谢谢

最佳答案

根本不要使用系统默认值。使用 ThreadLocal<T> :要么 ThreadLocal<TimeZone> ,或者更好的是 ThreadLocal<ZoneId>java.time类。然后您可以从那里获取您需要默认值的任何地方。

就我个人而言,我会尽量避免使用本地线程,并显式传递上下文 - 或者如果您想要隐式地拥有上下文,请封装所有上下文(例如,对于 Web request)在适当的上下文类型中,而不是针对时区、区域设置等使用单独的线程局部变量。

关于java - Java 8 中线程的 TimeZone.setDefault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31613859/

相关文章:

java - TableCellEditor 无法正确显示

java - 如何使用 Java 清除 OpenCV 图像中的小黑点?

java - 从 ListView 中获取选定的项目 |复选框列表单元格

java - 将迭代器添加到集合中

java - Antlr4 访客和成员

java - 如何捕获未找到的 spring mvc 映射,我正在使用 spring mvc 3.2.2

java - 启动外部 JAR 文件需要什么,例如 Minecraft 启动器?

java nio路径无法处理Windows网络路径

java - 在另一个类中包含充满可重用函数的类

java - 使用方法引用