Java线程挂起在本机方法中
解析日期字符串时,线程挂起在本机方法中。该线程在过去18小时内以相同的状态停止(不同时间的thread dumb显示相同的线程,并显示相关线程的相同堆栈) 请说明可能的错误Java线程挂起在本机方法中,java,jvm,threadpool,freeze,thread-dump,Java,Jvm,Threadpool,Freeze,Thread Dump,解析日期字符串时,线程挂起在本机方法中。该线程在过去18小时内以相同的状态停止(不同时间的thread dumb显示相同的线程,并显示相关线程的相同堆栈) 请说明可能的错误 "DateParsingThread - 001" #228 daemon prio=5 os_prio=0 tid=0x00007f98e0029000 nid=0x9c2 runnable [0x00007f98016ee000] java.lang.Thread.State: RUNNABLE at ja
"DateParsingThread - 001" #228 daemon prio=5 os_prio=0 tid=0x00007f98e0029000 nid=0x9c2 runnable [0x00007f98016ee000]
java.lang.Thread.State: RUNNABLE
at java.security.AccessController.doPrivileged(Native Method)
at sun.util.resources.LocaleData.getBundle(LocaleData.java:163)
at sun.util.resources.LocaleData.getDateFormatData(LocaleData.java:127)
at sun.util.locale.provider.LocaleResources.getCalendarNames(LocaleResources.java:325)
at sun.util.locale.provider.CalendarNameProviderImpl.getDisplayNamesImpl(CalendarNameProviderImpl.java:157)
at sun.util.locale.provider.CalendarNameProviderImpl.getDisplayNames(CalendarNameProviderImpl.java:139)
at sun.util.locale.provider.CalendarDataUtility$CalendarFieldValueNamesMapGetter.getObject(CalendarDataUtility.java:178)
at sun.util.locale.provider.CalendarDataUtility$CalendarFieldValueNamesMapGetter.getObject(CalendarDataUtility.java:154)
at sun.util.locale.provider.LocaleServiceProviderPool.getLocalizedObjectImpl(LocaleServiceProviderPool.java:281)
at sun.util.locale.provider.LocaleServiceProviderPool.getLocalizedObject(LocaleServiceProviderPool.java:265)
at sun.util.locale.provider.CalendarDataUtility.retrieveFieldValueNames(CalendarDataUtility.java:88)
at java.util.Calendar.getDisplayNames(Calendar.java:2178)
at java.text.SimpleDateFormat.getDisplayNamesMap(SimpleDateFormat.java:2366)
at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1972)
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java
at java.text.DateFormat.parse(DateFormat.java:364)
欢迎提供任何找到解决方案的建议。可能是您的捆绑包阻塞了线程(您可以调试
java.util.ResourceBundle.getBundleImpl
方法,并查看哪些资源阻塞了de进程)。这可能会导致JVM级死锁。尝试jstack-m
获取堆栈的本机部分。谢谢@apangin将检查“本机方法”部分在哪里?(您是如何发现它在本机方法中被阻塞的?)在java.security.AccessController.doPrivileged(本机方法)中,从这个@jurajMartinKa可以看出,您的包正在阻塞线程(您可以调试java.util.ResourceBundle.getBundleImpl
方法,并观察哪些资源正在阻塞反进程)。这可能会导致JVM级死锁。尝试jstack-m
获取堆栈的本机部分。谢谢@apangin将检查“本机方法”部分在哪里?(您是如何发现它在本机方法中被阻止的?)