java简单的死锁检测(转载线下代码)
生活随笔
收集整理的這篇文章主要介紹了
java简单的死锁检测(转载线下代码)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一個簡單的死鎖檢測功能、
1.探測出死鎖
主要是:java.lang.management類的關于線程的系列方法
一個線程監控類
ThreadMXBean x=ManagementFactory.getThreadMXBean();
使用x的方法
findDeadlockedThreads();
得到發生死鎖線程的ID
通過ID獲取線程信息ThreadInfo發送到處理類
2.死鎖處理(一般是警報)
package com.j.osdemo.deadlockcheck;import java.lang.management.ThreadInfo; import java.util.Map;/*** @Author {一位講師}* @Version 1.0* @description 死鎖處理* @Date: 2020/4/27 0027 */ public class DeadlockConsoleHandler implements DeadlockHandler {@Overridepublic void handleDeadlock(final ThreadInfo[] deadlockedThreads) {if (deadlockedThreads != null) {/*死鎖線程 被檢測到*/System.err.println("Deadlock detected!");Map<Thread, StackTraceElement[]> stackTraceMap = Thread.getAllStackTraces();for (ThreadInfo threadInfo : deadlockedThreads) {if (threadInfo != null) {for (Thread thread : Thread.getAllStackTraces().keySet()) {if (thread.getId() == threadInfo.getThreadId()) {System.err.println(threadInfo.toString().trim());for (StackTraceElement ste : thread.getStackTrace()) {System.err.println("t" + ste.toString().trim());}/*此處可以釋放所有鎖,回退,并且等待一段隨機的時間后重試*/}}}}}} }總結
以上是生活随笔為你收集整理的java简单的死锁检测(转载线下代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编---输出AX的地址值
- 下一篇: 汇编 debug调试没有执行对应文件源码