文章目录
定位死锁–ThreadMXBean
- 定位死锁--ThreadMXBean
使用ThreadMXBean
可以检测程序中出现死锁的线程, 获取该线程的相关信息. 做一些对应的操作.
相比较于jstack 在命令中查看. 此种写代码的方式, 能够在线程出现死锁的时候, 做一些对应的操作.
示例代码如下 :
package com.thread.deadlock;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
/**
* 类名称:ThreadMXBeanDetection
* 类描述: ThreadMXBean 检测死锁
*
* @author: https://javaweixin6.blog.csdn.net/
* 创建时间:2020/9/11 19:59
* Version 1.0
*/
public class ThreadMXBeanDetection implements Runnable{
//标记位, 不同的线程根据标记位执行不同的代码
int flag = 1 ;
//两把锁
static Object o1 = new Object();
static Object o2 = new Object();
public static void main(String[] args) throws InterruptedException {
ThreadMXBeanDetection r1 = new ThreadMXBeanDetection();
ThreadMXBeanDetection r2 = new ThreadMXBeanDetection();
//给不同的线程, 设置不同的标记位
r1.flag=1;
r2.flag=2;
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
//让两个子线程执行
Thread.sleep(1000);
ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
//获取发生死锁的线程id数组
long[] deadlockedThreads = threadMXBean.findDeadlockedThreads();
//判断发生死锁的线程是否为空
if (deadlockedThreads != null && deadlockedThreads.length > 0) {
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?