`
fanrey
  • 浏览: 254922 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

a Java-level deadlock example

    博客分类:
  • JAVA
 
阅读更多
Found one Java-level deadlock:
=============================
"StartStopServicePool-5 - 5165":
  waiting to lock monitor 0x0816cc20 (object 0xb37eb908, a sun.misc.Launcher$AppClassLoader),
  which is held by "soxplugin"
"soxplugin":
  waiting to lock monitor 0x08468ed4 (object 0xaf99edf8, a java.lang.Class),
  which is held by "StartStopServicePool-5 - 5165"

Java stack information for the threads listed above:
===================================================
"StartStopServicePool-5 - 5165":
at sun.security.jca.ProviderConfig.getProvider(Unknown Source)
- waiting to lock <0xb37eb908> (a sun.misc.Launcher$AppClassLoader) at sun.security.jca.ProviderList.loadAll(Unknown Source)
at sun.security.jca.ProviderList.removeInvalid(Unknown Source)
at sun.security.jca.Providers.getFullProviderList(Unknown Source)
- locked <0xaf99edf8> (a java.lang.Class for sun.security.jca.Providers) at java.security.Security.getProviders(Unknown Source)
at org.apache.commons.httpclient.HttpClient.<clinit>(HttpClient.java:78)
at no.axxessit.il.axxrpc.AxxRpcAdapter.<clinit>(AxxRpcAdapter.java:142)
at no.axxessit.il.axxrpc.NeInfoReader.<init>(NeInfoReader.java:71)
at no.axxessit.il.xmlrpc.XmlRpcDiscovery.connect(XmlRpcDiscovery.java:93)
at no.axxessit.im.NeDiscovery.load(NeDiscovery.java:215)
at no.axxessit.sooem.NeLoader.addNe(NeLoader.java:98)
at no.axxessit.sooem.netmodules.NetServiceFactory.connect(NetServiceFactory.java:160)
at no.axxessit.sooem.netmodules.NetServiceFactory.init(NetServiceFactory.java:141)
at no.axxessit.sooem.netmodules.NetServiceFactoryFacade.init(NetServiceFactoryFacade.java:71)
at no.axxessit.sooem.auxmodules.StartStop.processStartNet(StartStop.java:606)
at no.axxessit.sooem.plugin.request.StartStopServicePool$StartStopService.handleMessage(StartStopServicePool.java:69)
at no.axxessit.sooem.plugin.uithread.UIThread.run(UIThread.java:246)
at java.lang.Thread.run(Unknown Source)


"soxplugin":
at sun.security.jca.Providers.beginThreadProviderList(Unknown Source)
- waiting to lock <0xaf99edf8> (a java.lang.Class for sun.security.jca.Providers) at sun.security.jca.Providers.startJarVerification(Unknown Source)
at sun.security.util.SignatureFileVerifier.<init>(Unknown Source)
at java.util.jar.JarVerifier.processEntry(Unknown Source)
at java.util.jar.JarVerifier.update(Unknown Source)
at java.util.jar.JarFile.initializeVerifier(Unknown Source)
at java.util.jar.JarFile.getInputStream(Unknown Source)
- locked <0xb449cc40> (a java.util.jar.JarFile)
at sun.misc.URLClassPath$JarLoader$2.getInputStream(Unknown Source)
at sun.misc.Resource.cachedInputStream(Unknown Source)
- locked <0xb4bfa760> (a sun.misc.URLClassPath$JarLoader$2)
at sun.misc.Resource.getByteBuffer(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
- locked <0xb37eb908> (a sun.misc.Launcher$AppClassLoader)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
- locked <0xb37eb908> (a sun.misc.Launcher$AppClassLoader) at java.lang.ClassLoader.loadClass(Unknown Source)
at no.axxessit.nmi.notif.EventProcessor.<init>(EventProcessor.java:44)
at no.axxessit.nmi.NMIGWImpl.initCommunicationService(NMIGWImpl.java:259)
at no.axxessit.nmi.NMIGWImpl.activateGateway(NMIGWImpl.java:153)
at no.axxessit.gw.common.fw.AbstractGatewayImpl.startup(AbstractGatewayImpl.java:35)
at no.axxessit.nmi.NMIGWImpl.startup(NMIGWImpl.java:137)
at no.axxessit.sooplugin.action.StartupBaseServiceAction.performAction(StartupBaseServiceAction.java:23)
at no.axxessit.sooplugin.action.StartupCspGatewaysAction.performAction(StartupCspGatewaysAction.java:40)
at no.axxessit.sooplugin.SooPlugin.start(SooPlugin.java:50)
at no.axxessit.sooplugin.SooPlugin.startup(SooPlugin.java:40)
at no.axxessit.common.as.BaseServiceWrapper.run(BaseServiceWrapper.java:97)
at java.lang.Thread.run(Unknown Source)
at no.axxessit.common.thread.AxxThread.safeRun(AxxThread.java:169)
at no.axxessit.common.thread.AxxThread$1.run(AxxThread.java:134)
at java.security.AccessController.doPrivileged(Native Method)
at no.axxessit.common.thread.AxxThread.run(AxxThread.java:138)

Found 1 deadlock.

Heap
PSYoungGen      total 344064K, used 35831K [0xdb7e0000, 0xf37e0000, 0xf37e0000)
  eden space 294912K, 12% used [0xdb7e0000,0xddadde98,0xed7e0000)
  from space 49152K, 0% used [0xf07e0000,0xf07e0000,0xf37e0000)
  to   space 49152K, 0% used [0xed7e0000,0xed7e0000,0xf07e0000)
PSOldGen        total 131072K, used 24937K [0xb37e0000, 0xbb7e0000, 0xdb7e0000)
  object space 131072K, 19% used [0xb37e0000,0xb503a5d0,0xbb7e0000)
PSPermGen       total 30976K, used 17511K [0xaf7e0000, 0xb1620000, 0xb37e0000)
  object space 30976K, 56% used [0xaf7e0000,0xb08f9ff8,0xb1620000)

Solution 1: 让两个线程先后执行.
Solution 2: 在第一个线程里先锁ClassLoader.
ClassLoader cl = this.getClass().getClassLoader();
synchronized(cl){
}
分享到:
评论

相关推荐

    一个基于C#实现的多线程Multi-Threading Deadlock Tracer Utility处理类库源码

    本资源提供了一个基于C#实现的多线程死锁检测工具——"Multi-Threading Deadlock Tracer Utility"的源代码,它有助于开发者理解和解决多线程环境中常见的死锁问题。 死锁是多线程编程中的一个严重问题,当两个或多...

    go-deadlock:go (golang) 中的在线死锁检测

    什么go-deadlock 为 sync.(RW)Mutex 提供了 (RW)Mutex 的替代品。 如果您创建频道的意大利面,它将不起作用。 仅互斥体。安装go get github.com/sasha-s/go-deadlock/...用法 import "github....

    java-deadlock-workaround

    java死锁解决方法 要运行模拟: javac DeadlockedApp.java AppWrapper.java Java -cp 。 应用包装器 关于作者 Uri Shamay 是 Akamai 的首席首席系统软件工程师,您可以阅读有关他的更多信息,并在和关注他。

    操作系统教学课件:ch07-Deadlock-1pp.pdf

    操作系统教学课件:ch07-Deadlock-1pp.pdf

    操作系统概念英文课件:Chapter 07-deadlock.pptx

    操作系统概念英文课件:Chapter 07-deadlock.pptx

    计算机后端-Java-Java高并发从入门到面试教程-容思路.zip

    Java高并发编程是Java开发中的重要领域,尤其在构建大型、高性能的服务器端应用时,对高并发处理能力的需求更为显著。本教程旨在帮助初学者理解并掌握Java高并发的相关知识,同时也为准备面试的开发者提供参考。我们...

    JAVA基础测试中常见的异常问题汇总-Java-CSDN

    8. **并发异常**:在多线程环境中,死锁(Deadlock)、活锁(Livelock)和资源竞争(Race Condition)是常见的问题。使用synchronized关键字、wait()、notify()和notifyAll()方法,以及适当的并发工具类(如...

    现代操作系统课件:Chapter6-Deadlock.ppt

    Chapter 6 - Deadlock主要探讨了资源管理以及与死锁相关的各种概念。以下是详细的知识点解析: 1. 资源(Resources): - 资源是操作系统中被单个进程在某一时刻独占使用的对象,如设备、文件等。 - 资源可以分为...

    Java DeadLock and Concurrency

    关于Java死锁和并发性,首先需要了解的是死锁的概念。在并发编程中,死锁是指一组线程中的每个线程都在等待其他线程释放资源,从而导致无法向前推进的情况。这种情况是并发系统中非常普遍的问题,而在Java中,特别是...

    OS-Job-Scheduling-and-Deadlock-Experiments:所有操作系统实验

    总的来说,"OS-Job-Scheduling-and-Deadlock-Experiments"这个实验旨在通过实际操作加深对操作系统核心概念的理解。通过使用Jupyter Notebook和Python,你可以动态地探索不同的调度策略和死锁解决方案,这不仅能够...

    java源码剖析-deadlock-prevention:我的项目是关于使用动态分析避免多线程程序中的死锁。使用一个名为JADE的工具来实现此

    java源码剖析防止死锁 我的项目是关于使用动态分析避免多线程程序中的死锁。使用一个名为JADE的工具来实现此项目,并查看其效率如何。该项目中总共有六个模块,这些模块如下所示。程序的某些执行,ta提取的线程是否...

    SQL Server上的一个奇怪的Deadlock及其分析方法

    SQL Server上的一个奇怪的Deadlock及其分析方法 Deadlock是SQL Server中的一种常见问题,它会导致事务无法继续执行,影响系统的性能和可靠性。了解Deadlock的产生原因和分析方法是非常重要的。本文将详细介绍SQL ...

    philosophers-problem-deadlock

    哲学家问题陷入僵局五位哲学家想在一张圆桌旁吃饭。在每一个旁边有两个斗杆,与下一个晚餐者共享-餐桌上的客人。演示:Philo1 &lt;-&gt; stick1 &lt;-&gt; Philo2 &lt;-&gt; stick2 &lt;-&gt; Philo3 ......但是,如果他拿起stick1...

    java基础--11.多线程

    Java多线程是Java编程中的核心概念,尤其在开发高并发、高性能的应用程序时不可或缺。在Java中,多线程允许程序同时执行多个任务,从而提高系统资源的利用率和响应速度。下面我们将深入探讨Java多线程的相关知识点。...

    死锁1---马克-to-win java视频

    死锁1deadlock---马克-to-win java视频的详细描述与介绍

    死锁2---马克-to-win java视频

    死锁2deadlock---马克-to-win java视频的详细的描述与介绍

    后端JAVA虚拟机JVM调优必备工具

    IBM Thread and Monitor Dump Analyzer for Java专业JVM调优工具 一、使用方法 1.使用java -jar启动程序 2.找到需要分析的jvm进程 3.使用jstack [pid] &gt; /tmp/sdapjvmlog.txt导出进程的详细日志 4.使用程序打开...

    oracle+ora-各种常见java.sq

    - `java.sql.SQLException: ORA-00060: deadlock detected while waiting for resource`: 两个或多个事务因相互等待对方释放资源而陷入死锁。通过死锁检测工具或优化事务处理逻辑来解决。 9. **权限问题** - `...

Global site tag (gtag.js) - Google Analytics