java死锁检测
/*** @author:cp* @time:2021-2-24* @Description: java死鎖測試* 進程id查看命令:jsp 找到對應的進程id* 通過jstack 進程id 輸出死鎖信息** 如何定位死循環導致的其他線程阻塞等待:* linux下top命令查看cpu使用率較高的java進程,進而用top -Hp ?pid查看該java進程下cpu使用率較高的線程。再用jstack命令查看線程具體調用情況,排查問題。*/
public class DeadLockSample extends Thread {private String first;private String second;public DeadLockSample(String name, String first, String second) {super(name);this.first = first;this.second = second;}public void run() {synchronized (first) {System.out.println(this.getName() + " obtained: " + first);try {Thread.sleep(1000L);synchronized (second) {System.out.println(this.getName() + " obtained: " + second);}} catch (InterruptedException e) {// Do nothing}}}//死鎖/*public static void main(String[] args) throws InterruptedException {String lockA = "lockA";String lockB = "lockB";DeadLockSample t1 = new DeadLockSample("Thread1", lockA, lockB);DeadLockSample t2 = new DeadLockSample("Thread2", lockB, lockA);t1.start();t2.start();t1.join();t2.join();}*/public static void main(String[] args) throws InterruptedException {ThreadMXBean mbean = ManagementFactory.getThreadMXBean();Runnable dlCheck = new Runnable() {@Overridepublic void run() {long[] threadIds = mbean.findDeadlockedThreads();if (threadIds != null) {ThreadInfo[] threadInfos = mbean.getThreadInfo(threadIds);System.out.println("Detected deadlock threads:");for (ThreadInfo threadInfo : threadInfos) {System.out.println(threadInfo.getThreadName());}}}};ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);// 稍等5秒,然后每10秒進行一次死鎖掃描scheduler.scheduleAtFixedRate(dlCheck, 5L, 10L, TimeUnit.SECONDS);//死鎖代碼String lockA = "lockA";String lockB = "lockB";DeadLockSample t1 = new DeadLockSample("Thread1", lockA, lockB);DeadLockSample t2 = new DeadLockSample("Thread2", lockB, lockA);t1.start();t2.start();t1.join();t2.join();}
}
上述代碼示例會產生死鎖
總結:
1、進程id查看命令:jsp 找到對應的進程id * 通過jstack 進程id 輸出死鎖信息 2、如何定位死循環導致的其他線程阻塞等待: * linux下top命令查看cpu使用率較高的java進程,進而用top -Hp ?pid查看該java進程下cpu使用率較高的線程。再用jstack命令查看線程具體調用情況,排查問題。總結
- 上一篇: MDT服务器部署系统,使用MDT2013
- 下一篇: 软件需求工程 高校教学平台 项目可行性报