
目录
1.创建死锁的类
2.IDEA使用jstatck
2.1查看死锁所占用的进程号
2.2 使用jstack+进程号查看具体情况
2.3得出结论
3.win+r使用jconsole命令
3.1根据进程号进入图形化页面
3.2选择不安全的连接 进入如下页面
3.3查看死锁状态
1.创建死锁的类
@Slf4j
public class TestDeadLock {
public static void main(String[] args) {
test1();
}
private static void test1() {
Object A = new Object();
Object B = new Object();
Thread t1 = new Thread(() -> {
synchronized (A) {
log.debug("lock A");
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace(); }
synchronized (B) {
log.debug("lock B");
log.debug(" *** 作...");
}
}
}, "t1");
Thread t2 = new Thread(() -> {
synchronized (B) {
log.debug("lock B");
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace(); }
synchronized (A) {
log.debug("lock A");
log.debug(" *** 作...");
}
}
}, "t2");
t1.start();
t2.start();
}
}
2.IDEA使用jstatck
2.1查看死锁所占用的进程号
2.2 使用jstack+进程号查看具体情况
2.3得出结论
可以看到两个线程都拿着一把锁,等待对方锁释放,就进入了死锁状态
3.win+r使用jconsole命令 3.1根据进程号进入图形化页面 3.2选择不安全的连接 进入如下页面 3.3查看死锁状态
得出结果
可以看到两个线程都拿着一把锁,等待对方锁释放,就进入了死锁状态
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)