gpt4 book ai didi

java.util.Calendar.get* 和 java.util.Calendar.set* 是阻塞的

转载 作者:行者123 更新时间:2023-12-01 12:30:20 26 4
gpt4 key购买 nike

在多线程应用程序上,有锁定的线程,当我得到线程转储时,它似乎与 java.util.Calendar 类有关,该对象是使用 Calendar.getInstance() 创建的它返回new实例。你有什么意见吗?这是线程转储的示例;

"QuartzScheduler_Worker-128" prio=10 tid=0x00007f48844fe800 nid=0xb75f runnable [0x00007f43f01bd000]
java.lang.Thread.State: RUNNABLE
at java.util.SimpleTimeZone.getOffset(SimpleTimeZone.java:656)
- locked <0x00007f4950c99780> (a java.util.SimpleTimeZone)
at java.util.SimpleTimeZone.getOffsets(SimpleTimeZone.java:550)
at java.util.SimpleTimeZone.getOffset(SimpleTimeZone.java:522)
...


"QuartzScheduler_Worker-124" prio=10 tid=0x00007f48844f6800 nid=0xb75a waiting for monitor entry [0x00007f43f05c3000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.util.SimpleTimeZone.getOffsets(SimpleTimeZone.java:533)
- waiting to lock <0x00007f4950c99780> (a java.util.SimpleTimeZone)
at java.util.SimpleTimeZone.getOffset(SimpleTimeZone.java:522)
at java.util.SimpleTimeZone.inDaylightTime(SimpleTimeZone.java:834)
at sun.util.calendar.ZoneInfo.getOffsets(ZoneInfo.java:282)
...

编辑:jdk 版本为 1.6._021

最佳答案

我认为您刚刚在两个线程争用共享 SimpleTimeZone 对象上的锁时设法获取了线程转储。一个线程持有锁并且可以运行。另一个线程正在等待锁。

在我看来,这没有什么特别值得注意的。

(我无法在网上找到与这些行号精确匹配的源代码。但是我能找到的 java.util.SimpleTimeZone 版本没有透露任何内容有趣。提示:在您正在使用的 Java 的精确版本的 JDK 中,您应该找到库源代码的 ZIP 文件。查看此类的源代码 ....)

关于java.util.Calendar.get* 和 java.util.Calendar.set* 是阻塞的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25968028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com