Java ReentrantReadWriteLock$FairSync的线程被挂起

Java ReentrantReadWriteLock$FairSync的线程被挂起,java,multithreading,Java,Multithreading,当使用“cmdline-jmxclient-0.10.3.jar”访问JMX服务时,它不会无限期地响应。 在线程转储中,我们观察到所有这些线程都处于等待状态,它们正在等待ReentrantReadWriteLock$FairSync JRE详细信息: Java版本为:1.8.0_45 Java供应商是:Oracle公司 这是间歇性故障,仅观察一次 这是已知的JDK问题吗? 堆栈跟踪: "RMI TCP Connection(733561)-10.219.11.2" #130543 daemon

当使用“cmdline-jmxclient-0.10.3.jar”访问JMX服务时,它不会无限期地响应。 在线程转储中,我们观察到所有这些线程都处于等待状态,它们正在等待ReentrantReadWriteLock$FairSync

JRE详细信息: Java版本为:1.8.0_45 Java供应商是:Oracle公司

这是间歇性故障,仅观察一次

这是已知的JDK问题吗?

堆栈跟踪:

"RMI TCP Connection(733561)-10.219.11.2" #130543 daemon prio=5 os_prio=0 tid=0x00007f513007a800 nid=0x64d0 waiting on condition [0x00007f4f7e8e5000]
       java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000c050e3e0> (a java.util.concurrent.locks.ReentrantReadWriteLock$FairSync)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
        at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
        at com.sun.jmx.mbeanserver.Repository.query(Repository.java:528)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.queryMBeansImpl(DefaultMBeanServerInterceptor.java:511)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.queryMBeans(DefaultMBeanServerInterceptor.java:503)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.queryMBeans(JmxMBeanServer.java:592)
        at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1481)
        at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
        at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1307)
        at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1399)
        at javax.management.remote.rmi.RMIConnectionImpl.queryMBeans(RMIConnectionImpl.java:535)
        at sun.reflect.GeneratedMethodAccessor100.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)
        at sun.rmi.transport.Transport$1.run(Transport.java:200)
        at sun.rmi.transport.Transport$1.run(Transport.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
        at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$241(TCPTransport.java:683)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$1/2095057400.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
“RMI TCP连接(733561)-10.219.11.2”#130543守护程序prio=5 os_prio=0 tid=0x00007f513007a800 nid=0x64d0等待条件[0x00007f4f7e8e5000]
java.lang.Thread.State:等待(停车)
在sun.misc.Unsafe.park(本机方法)
-停车等待(java.util.concurrent.locks.ReentrantReadWriteLock$FairSync)
位于java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
位于java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
位于java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
位于java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
位于java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
位于com.sun.jmx.mbeanserver.Repository.query(Repository.java:528)
位于com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.QueryMBeanSimple(DefaultMBeanServerInterceptor.java:511)
位于com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.queryMBeans(DefaultMBeanServerInterceptor.java:503)
位于com.sun.jmx.mbeanserver.JmxMBeanServer.queryMBeans(JmxMBeanServer.java:592)
位于javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1481)
位于javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
位于javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1307)
位于javax.management.remote.rmi.RMIConnectionImpl.doPrivilegeOperation(RMIConnectionImpl.java:1399)
位于javax.management.remote.rmi.RMIConnectionImpl.queryMBeans(RMIConnectionImpl.java:535)
在sun.reflect.GeneratedMethodAccessor100.invoke处(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:497)
在sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)
在sun.rmi.transport.transport$1.run(transport.java:200)
在sun.rmi.transport.transport$1.run(transport.java:197)
位于java.security.AccessController.doPrivileged(本机方法)
位于sun.rmi.transport.transport.serviceCall(transport.java:196)
位于sun.rmi.transport.tcp.tcpttransport.handleMessages(tcpttransport.java:568)
位于sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.run0(tcpttransport.java:826)
在sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.lambda$run$241(tcpttransport.java:683)
位于sun.rmi.transport.tcp.tcpttransport$ConnectionHandler$$Lambda$1/2095057400.run(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.run(tcpttransport.java:682)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
运行(Thread.java:745)
提前感谢,,
Vikas

可能不是相关的堆栈跟踪,请查找其中包含代码库的堆栈跟踪。更有可能的是什么?JVM中存在一个bug,在全球范围内可能安装了数亿甚至数十亿个拷贝,或者代码中存在一个死锁bug,可能只有少数实例?好的,您的RMI服务器被重入锁阻塞,这对您的代码有什么影响,为什么相关?你在构建什么?你用来实现它的代码是什么?我认为ReentrantReadWriteLock无法进入“读”锁,尽管没有人获得写锁。Oracle JDK bug DB中也报告了同样的问题:它可能不是相关的堆栈跟踪,请查找其中包含代码库的堆栈跟踪。更有可能的是什么?JVM中存在一个bug,在全球范围内可能安装了数亿甚至数十亿个拷贝,或者代码中存在一个死锁bug,可能只有少数实例?好的,您的RMI服务器被重入锁阻塞,这对您的代码有什么影响,为什么相关?你在构建什么?你用来实现它的代码是什么?我认为ReentrantReadWriteLock无法进入“读”锁,尽管没有人获得写锁。Oracle JDK bug DB中报告了相同的问题: