- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
java.util.TimeZone.getTimeZone(id)
是一种根据 id 获取时区的方法。当我使用这个类时,我用反编译器打开它并注意到它是同步的
。由于它是 static
,这意味着没有两个线程可以同时调用该方法。如果多个线程(例如在 Web 应用程序中)经常获取时区,这可能会非常痛苦。为什么一定要同步?
然后我意识到文档没有说明任何关于同步的内容。所以,我的反编译器可能是错误的。然后我打开the source ,并且是同步的。为什么没有记录在案?我知道 javadoc 不包含 synchronized
关键字,但它可能已被提及。
解决办法当然是使用joda-time DateTimeZone
最佳答案
该方法最终可以实际创建一个 TimeZone
(按照代码向下)并将其添加到 Map
。我猜每个人都认为这不是您应该经常调用的方法,因此选择了简单的方法。
我很难想出一个合理的案例来争论这个synchronized
。无竞争的同步
(即使是在非常高性能的情况下,这是我经常处理的事情)像芯片一样便宜。
要获得竞争,您不仅需要多个线程,还需要多个同时访问这个特定代码块 的线程。如果在这种情况下您确实遇到了问题,您可以轻松地将自己的缓存保存在 ConcurrentHashMap
中,或者保存在完全未锁定的结构中。
至于为什么没有记录 - 同步是实现的一个属性。欢迎您实现不执行此同步的替代库。 JDK 文档记录了 Java 库,而不是(大部分)Sunacle 的实现。
关于java - 为什么 TimeZone.getTimeZone(id) 是同步的,为什么没有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5682236/
我正在使用 Java 8, 在我们的代码的前面,我们使用 sdf.setTimeZone(TimeZone.getTimeZone("PDT")); 转换为失败的美国太平洋地区(没有抛出任何错误,但转
TimeZone.getTimeZone("US/Mountain") 和 TimeZone.getTimeZone("MST") 返回不同的结果。这个java类中的MST不代表“山区标准时间”吗?
我有以下指令: TimeZone zone = TimeZone.getTimeZone("Asia/Toyo"); 显然,它应该返回 null,但它会返回默认的时区,这不是我的情况所需的行为。来自
对于下面的代码,我得到了不同的输出 TimeZone t = TimeZone.getTimeZone("GMT-8"); // Also tried UTC-8 and GMT-8:00 //Ti
setTimeZone(new DateTimeZone($dt->getTimeZone()->getName())); echo $dt->getTimezone()->getName().'';
我正在不同时区测试我的应用程序。我手动将物理手机的时区更改为英国伦敦,即 GMT+00:00 但是,当我使用 myCalendar.getTimeZone().getDisplayName(true,
当我在 ideone 上运行此代码时: https://ideone.com/sm2SHC我在标准输出中收到 10800000,当我在本地运行它时,我可以看到 7200000。 产生此输出的代码是:
为什么不TimeZone.getTimeZone()如果给定无效时区 ID,方法会抛出错误?相反,它返回“如果无法理解给定的 ID,则返回 GMT 区域”。这个决定背后的理由是什么? 最佳答案 我不确
它返回 GMT 的默认时区。 使用带有“z”作为时区的 SimpleTimeFormat,打印“PDT”。但是“PDT”不在从 TimeZone.getAvailableIDs() 返回的列表中。真奇
本文整理了Java中org.apache.xmlrpc.XmlRpcConfig.getTimeZone()方法的一些代码示例,展示了XmlRpcConfig.getTimeZone()的具体用法。这
我正在将时间从 CST 转换为本地时间,但 getTimeZone 似乎无法正常工作。 String cstTime = "2013-06-21 14:00:00"; SimpleDa
如果函数的输入是“”(空字符串),但我正在获取 GMT 时区,则需要 TimeZone.getTimeZone() 的无/假输出。请帮忙解决这个问题? 最佳答案 如果我理解你的问题,当时区String
在 Java 中是否有任何替代 TimeZone.getTimeZone() 的方法,因为 getTimeZone() 是同步的,导致我的程序/应用程序缩小。 public static synchr
java.util.TimeZone.getTimeZone(id)是一种根据 id 获取时区的方法。当我使用这个类时,我用反编译器打开它并注意到它是同步的。由于它是 static,这意味着没有两个线
本文整理了Java中org.eclipse.persistence.internal.oxm.XMLConversionManager.getTimeZone()方法的一些代码示例,展示了XMLCon
对于时区 API - https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html#getTimeZone(java.lang.S
将我的运行时升级到 Java 7 后,我发现速度非常慢......而且我的程序将所有时间都花在 SimpleDateFormat 构造函数中。如此处的一篇精彩帖子所述:http://coffeedri
我想获取洛杉矶的时区信息,现在10/10/2017是夏令时,但是我通过两种方式获取洛杉矶的时区得到了不同的结果。 public class TimeZoneDemo2 { public stati
我真的对使用 Calendar.getInstance(TimeZone.getTimeZone("UTC")) 方法调用得到的结果感到困惑,它正在返回 IST 时间。 这是我使用的代码 Calend
SimpleDateFormat 的 getTimeZone().getID() 方法返回 Asia/Jerusalem 而不是 Asia/Kolkata 格式为 EEE MMM dd HH:mm:s
我是一名优秀的程序员,十分优秀!