java程序锁表_java程序死锁的例子和排查

public class DeadLockDemo {

public static void main(String[] args) {

new Thread(new hostLockThread("lockA","lockB"),"aaaaa").start();

new Thread(new hostLockThread("lockB","lockA"),"bbbb").start();

}

}

class hostLockThread implements Runnable{

private String lockA;

private String lockB;

public hostLockThread(String lockA, String lockB) {

this.lockA = lockA;

this.lockB = lockB;

}

@Override

public void run() {

synchronized (lockA){

System.out.println(Thread.currentThread().getName()+"\t 持有锁"+lockA);

synchronized (lockB){

System.out.println(Thread.currentThread().getName()+"\t 想去获取锁"+lockB);

}

}

}

}

定位分析排查

E:\study>jps -l

20736

4528 DealLockDemo

13140 org.jetbrains.jps.cmdline.Launcher

19476 org.jetbrains.idea.maven.server.RemoteMavenServer36

8632 org.jetbrains.kotlin.daemon.KotlinCompileDaemon

6620 sun.tools.jps.Jps

E:\study>jstack 4528

Java stack information for the threads listed above:

===================================================

"bbbb":

at hostLockThread.run(DealLockDemo.java:22)

- waiting to lock <0x00000000d5ec8e68> (a java.lang.String)

- locked <0x00000000d5ec8ea0> (a java.lang.String)

at java.lang.Thread.run(Thread.java:748)

"aaaaa":

at hostLockThread.run(DealLockDemo.java:22)

- waiting to lock <0x00000000d5ec8ea0> (a java.lang.String)

- locked <0x00000000d5ec8e68> (a java.lang.String)

at java.lang.Thread.run(Thread.java:748)

Found 1 deadlock.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值