死锁
死锁测试实例:
package com.sw.lock;
import java.util.concurrent.TimeUnit;
/**
* @Author suaxi
* @Date 2021/2/22 23:48
* 死锁Demo
*/
public class DeadLockTest {
public static void main(String[] args) {
String lockA = "lockA";
String lockB = "lockB";
new Thread(new DeadLock(lockA,lockB),"A").start();
new Thread(new DeadLock(lockB,lockA),"B").start();
}
}
class DeadLock implements Runnable{
private String lockA;
private String lockB;
public DeadLock(String lockA, String lockB) {
this.lockA = lockA;
this.lockB = lockB;
}
@Override
public void run() {
synchronized (lockA){
System.out.println(Thread.currentThread().getName()+"--->现在的锁是:"+lockA+",想获取的资源是:"+lockB);
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lockB){
System.out.println(Thread.currentThread().getName()+"--->现在的锁是:"+lockB+",想获取的资源是:"+lockA);
}
}
}
}
解决思路:
1、jps -l
查看进程号
2、jstack 进程号
查看具体的死锁信息
评论 (0)