gpt4 book ai didi

java - Tomcat 挂起调用 TimeZone

转载 作者:搜寻专家 更新时间:2023-11-01 03:41:58 25 4
gpt4 key购买 nike

我遇到了导致生产中断的问题。在 AWS/Ubuntu/Tomcat 堆栈中,运行 Tomcat 的 CPU 跃升至 100%,当我获得线程转储时,这段代码一直被阻塞在完全相同的位置。 (所有其他人都被锁定并等待。)

"TP-Processor6" daemon prio=10 tid=0x0000000041ec2800 nid=0x41c4 runnable [0x00007f70194b5000]
java.lang.Thread.State: RUNNABLE
at sun.util.calendar.ZoneInfo.getTransitionIndex(ZoneInfo.java:322)
at sun.util.calendar.ZoneInfo.getOffsets(ZoneInfo.java:248)
at sun.util.calendar.ZoneInfo.getOffsets(ZoneInfo.java:225)
at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2024)
at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:1996)
at java.util.Calendar.setTimeInMillis(Calendar.java:1109)
at java.util.GregorianCalendar.<init>(GregorianCalendar.java:576)
at java.util.Calendar.createCalendar(Calendar.java:1011)
at java.util.Calendar.getInstance(Calendar.java:948)
at com.xxx.core.util.DateUtil.modifyDate(DateUtil.java:385)
at com.xxx.core.util.DateUtil.getDayDate(DateUtil.java:563)
at com.xxx.core.util.DateUtil.getDayDate(DateUtil.java:573)
at com.xxx.core.util.DateUtil.getDayDate(DateUtil.java:569)
at com.xxx.core.util.DateUtil.splitByDays(DateUtil.java:496)
at com.xxx.core.util.DateUtil.splitDateIntervalByIntervals(DateUtil.java:474)
at com.xxx.core.util.DateUtil.splitDateIntervalByIntervals(DateUtil.java:436)

最佳答案

围绕事物进行一些更好的记录,以弄清楚这里发生了什么。

确保您的实例指定了正确的编码和区域设置——系统、tomcat 容器、应用程序。将 GMT 作为标准并尝试:

Calendar.getInstance ("GMT-0", Locale.US); // verify inputs

如果您正在获取日历实例,为什么要显式地重新设置日期?为什么不创建一个新日历?然后您将实例化一个新日历:

Calendar cal = new Calendar (TimeZone zone, Locale aLocale); // new 
cal.setTimeZone("GMT-0");
cal.setTimeInMillis(System.currentTimeMillis ());

日历和日期对象在 Java 中具有相对的可塑性,因此您可以改变它们的功能。我猜测环境变量或容器中可能有一些设置不正确,例如与 Calendar 实例尝试的冲突的本地或编码。尝试明确指定所有内容。

这是我最好的直觉。

关于java - Tomcat 挂起调用 TimeZone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12215708/

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