java.lang.Class.getMethods中的Java级死锁 - CentOS-7.2

时间:2016-03-11 06:23:43

标签: java multithreading centos classloader

我试图显示一个类的所有方法名称。 此代码在发送的os 6中运行良好,

private static void extractClassMethods(Class classObject) {     

    // read the methods
    Method[] methods = classObject.getMethods();

    // no methods
    if (methods == null) {
        return;
    }

    // print method path
    for (Method method : methods) {  
        System.out.println(method.getName()) ;
    } 
}

查找完整的例外日志,

发现一个Java级死锁:

"螺纹-24&#34 ;:   等待锁定监视器0x00007fee807b66b8(对象0x00000007e060e490,一个org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader),   这是由" Thread-15" "螺纹-15&#34 ;:   等待锁定监视器0x00007feebc0101c8(对象0x00000007e12564e8,一个java.lang.Object),   这是由" Start Level Event Dispatcher" "开始级别事件调度员":   等待锁定监视器0x00007fee807b66b8(对象0x00000007e060e490,一个org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader),   由" Thread-15"

持有

上面列出的线程的Java堆栈信息:

"螺纹-24&#34 ;:     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:424)      - 等待锁定< 0x00000007e060e490> (a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader)     在org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:413)     在org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:189)     在org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:340)     在org.eclipse.osgi.framework.internal.core.SingleSourcePackage.loadClass(SingleSourcePackage.java:37)     在org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:405)     在org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:369)     在org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:357)     在org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:83)     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)     at java.lang.Class.getDeclaredMethods0(Native Method)     at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)     at java.lang.Class.privateGetPublicMethods(Class.java:2651)     at java.lang.Class.getMethods(Class.java:1467)     at com.something.extractClassMethods(MethodAccessManager.java:102)     在java.lang.Thread.run(Thread.java:744) "螺纹-15&#34 ;:     at com.eclipsesource.jaxrs.publisher.internal.JAXRSConnector.addResource(JAXRSConnector.java:110)      - 等待锁定< 0x00000007e12564e8> (一个java.lang.Object)     at com.eclipsesource.jaxrs.publisher.internal.ResourceTracker.delegateAddService(ResourceTracker.java:45)     at com.eclipsesource.jaxrs.publisher.internal.ResourceTracker.addingService(ResourceTracker.java:39)     在org.osgi.util.tracker.ServiceTracker $ Tracked.trackAdding(ServiceTracker.java:1064)     在org.osgi.util.tracker.ServiceTracker $ Tracked.track(ServiceTracker.java:1042)     在org.osgi.util.tracker.ServiceTracker $ Tracked.serviceChanged(ServiceTracker.java:975)     在org.eclipse.osgi.framework.internal.core.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:94)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:1224)     在org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:195)     在org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:141)     在org.eclipse.osgi.framework.internal.core.Framework.publishServiceEventPrivileged(Framework.java:1603)     在org.eclipse.osgi.framework.internal.core.Framework.publishServiceEvent(Framework.java:1578)     在org.eclipse.osgi.framework.internal.core.ServiceRegistrationImpl。(ServiceRegistrationImpl.java:103)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl.createServiceRegistration(BundleContextImpl.java:657)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:609)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:675)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl $ 2.run(BundleContextImpl.java:999)     at java.security.AccessController.doPrivileged(Native Method)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:993)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:974)     在org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)     在org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:260)     在org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:400)     在org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:111)     在org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:417)     在org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:189)     在org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:340)     在org.eclipse.osgi.framework.internal.core.SingleSourcePackage.loadClass(SingleSourcePackage.java:37)     在org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:405)     在org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:369)     在org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:357)     在org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:83)     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl $ 2.run(BundleContextImpl.java:999)     at java.security.AccessController.doPrivileged(Native Method)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:993)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:974)     在org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)     在org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:260)     在org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:400)     在org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:111)     在org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:417)     在org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:189)     在org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:340)     在org.eclipse.osgi.framework.internal.core.SingleSourcePackage.loadClass(SingleSourcePackage.java:37)     在org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:405)     在org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:369)     在org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:357)     在org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:83)     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)     at java.lang.Class.getDeclaredMethods0(Native Method)     at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)     at java.lang.Class.privateGetPublicMethods(Class.java:2651)     at java.lang.Class.getMethods(Class.java:1467)     在com.something.extractClassMethods(MethodAccessManager.java:102     在java.lang.Thread.run(Thread.java:744) "开始级别事件调度员":     at java.lang.Class.getDeclaredMethods0(Native Method)     at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)     at java.lang.Class.getDeclaredMethods(Class.java:1855)     在org.glassfish.jersey.server.model.IntrospectionModeller $ 2.run(IntrospectionModeller.java:236)     at java.security.AccessController.doPrivileged(Native Method)     at org.glassfish.jersey.server.model.IntrospectionModeller.getAllDeclaredMethods(IntrospectionModeller.java:230)     at org.glassfish.jersey.server.model.IntrospectionModeller.checkForNonPublicMethodIssues(IntrospectionModeller.java:170)     在org.glassfish.jersey.server.model.IntrospectionModeller.doCreateResourceBuilder(IntrospectionModeller.java:118)     at org.glassfish.jersey.server.model.IntrospectionModeller.access $ 000(IntrospectionModeller.java:80)     在org.glassfish.jersey.server.model.IntrospectionModeller $ 1.call(IntrospectionModeller.java:111)     在org.glassfish.jersey.server.model.IntrospectionModeller $ 1.call(IntrospectionModeller.java:108)     在org.glassfish.jersey.internal.Errors.process(Errors.java:315)     在org.glassfish.jersey.internal.Errors.process(Errors.java:297)     在org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255)     在org.glassfish.jersey.server.model.IntrospectionModeller.createResourceBuilder(IntrospectionModeller.java:108)     在org.glassfish.jersey.server.model.Resource.from(Resource.java:744)     在org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:411)     在org.glassfish.jersey.server.ApplicationHandler.access $ 500(ApplicationHandler.java:163)     在org.glassfish.jersey.server.ApplicationHandler $ 3.run(ApplicationHandler.java:323)     在org.glassfish.jersey.internal.Errors $ 2.call(Errors.java:289)     在org.glassfish.jersey.internal.Errors $ 2.call(Errors.java:286)     在org.glassfish.jersey.internal.Errors.process(Errors.java:315)     在org.glassfish.jersey.internal.Errors.process(Errors.java:297)     在org.glassfish.jersey.internal.Errors.processWithException(Errors.java:286)     在org.glassfish.jersey.server.ApplicationHandler。(ApplicationHandler.java:320)     在org.glassfish.jersey.server.ApplicationHandler。(ApplicationHandler.java:285)     在org.glassfish.jersey.servlet.WebComponent。(WebComponent.java:310)     在org.glassfish.jersey.servlet.ServletContainer.reload(ServletContainer.java:578)     at com.eclipsesource.jaxrs.publisher.internal.JerseyContext.addResource(JerseyContext.java:71)     at com.eclipsesource.jaxrs.publisher.internal.JAXRSConnector.registerResource(JAXRSConnector.java:140)     at com.eclipsesource.jaxrs.publisher.internal.JAXRSConnector.registerResource(JAXRSConnector.java:122)     at com.eclipsesource.jaxrs.publisher.internal.JAXRSConnector.doAddResource(JAXRSConnector.java:116)     at com.eclipsesource.jaxrs.publisher.internal.JAXRSConnector.addResource(JAXRSConnector.java:110)      - 已锁定< 0x00000007e12564e8> (一个java.lang.Object)     at com.eclipsesource.jaxrs.publisher.internal.ResourceTracker.delegateAddService(ResourceTracker.java:45)     at com.eclipsesource.jaxrs.publisher.internal.ResourceTracker.addingService(ResourceTracker.java:39)     在org.osgi.util.tracker.ServiceTracker $ Tracked.trackAdding(ServiceTracker.java:1064)     在org.osgi.util.tracker.ServiceTracker $ Tracked.trackInitialServices(ServiceTracker.java:926)     在org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:330)      - 已锁定< 0x00000007e1256ab8> (com.eclipsesource.jaxrs.publisher.internal.ResourceTracker)     在org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:274)     at com.eclipsesource.jaxrs.publisher.internal.Activator.openAllServiceTracker(Activator.java:76)     at com.eclipsesource.jaxrs.publisher.internal.Activator.start(Activator.java:50)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl $ 2.run(BundleContextImpl.java:999)     at java.security.AccessController.doPrivileged(Native Method)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:993)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:974)     在org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)     在org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:260)     在org.eclipse.update.internal.configurator.ConfigurationActivator.installBundles(ConfigurationActivator.java:216)     在org.eclipse.update.internal.configurator.ConfigurationActivator.start(ConfigurationActivator.java:80)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl $ 2.run(BundleContextImpl.java:999)     at java.security.AccessController.doPrivileged(Native Method)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:993)     在org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:974)     在org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)     在org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:350)     在org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1118)     在org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:631)     在org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:505)     在org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:279)      - 已锁定< 0x00000007e40c67c0> (一个java.lang.Object)     在org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:465)     在org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:195)     在org.eclipse.osgi.framework.eventmgr.EventManager $ EventThread.run(EventManager.java:297)

发现1死锁。

1 个答案:

答案 0 :(得分:0)

你的代码很好 从org.eclipse.osgi.framework开始的异常堆栈还有其他问题 你的代码在我身边工作得很好。