Python 官方文档:入门教程 => 点击学习
导致死锁的程序 package com.study.train; import java.io.IOException; import java.lang.management
package com.study.train;
import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
import java.lang.reflect.Field;
import java.util.*;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.FutureTask;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import static java.lang.Thread.yield;
public class Main extends Thread{
private Object o1;
private Object o2;
Main(Object oa,Object ob,String name) {
super(name);
o1 = oa;
o2 = ob;
}
@Override
public void run() {
synchronized (o1) {
System.out.println("thread: "+Thread.currentThread().getName() + " get lock");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (o2) {
System.out.println("two lock is get");
}
}
}
public static void main(String[] args) throws InterruptedException {
Object oj1 = new Object();
Object oj2 = new Object();
Main m1 = new Main(oj1,oj2,"thread1");
Main m2 = new Main(oj2,oj1,"thread2");
m1.start();
m2.start();
m1.join();
m2.join();
}
}
linux上可以先使用top | grep java,查找忙的线程pid,然后拿到该线程id进行分析,jstakc pid。
到此这篇关于Java检测死锁案例的文章就介绍到这了,更多相关Java死锁内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Java检测死锁案例
本文链接: https://www.lsjlt.com/news/129580.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0