美文网首页
java死锁问题排查

java死锁问题排查

作者: 别赶路_去感受路 | 来源:发表于2018-05-11 00:28 被阅读0次

首先熟悉一下jstack命令的用法,主要参数有-F -l -m 如下图:

jstack

模拟一段死锁的java代码,如下:

```java

@Slf4j

public class DeadLockMockerimplements Runnable {

/**

* 标识

* flag = 1 , 占用资源L1去获取L2

* flag = 0 , 占用资源L2去获取L1

*/

    public boolean flag =false;

    /**

* 声明两个资源对象用来获取资源锁

*/

    public static ObjectL1 =new Object();

    public static ObjectL2 =new Object();

    public static void mock() {

DeadLockMocker deadLock1 =new DeadLockMocker();

        DeadLockMocker deadLock2 =new DeadLockMocker();

        deadLock1.flag =true;

        deadLock2.flag =false;

        Thread thread1 =new Thread(deadLock1);

        Thread thread2 =new Thread(deadLock2);

        thread1.start();

        thread2.start();

    }

@Override

    public void run() {

log.info("flag: {}", flag);

        // deadLock2占用资源o1,准备获取资源o2

        if (flag) {

log.info("准备获取到资源 L1");

            synchronized (L1) {

log.info("获取到资源 L1");

                try {

Thread.sleep(1000);

                }catch (InterruptedException e) {

e.printStackTrace();

                }

log.info("准备获取到资源 L2");

                synchronized (L2) {

log.info("获取到资源 L2");

                }

}

}

// deadLock1占用资源o2,准备获取资源o1

        else if (!flag) {

log.info("准备获取到资源 L2");

            synchronized (L2) {

log.info("获取到资源 L2");

                try {

Thread.sleep(1000);

                }catch (InterruptedException e) {

e.printStackTrace();

                }

log.info("准备获取到资源 L1");

                synchronized (L1) {

log.info("获取到资源 L1");

                }

}

}

}

}

```

执行java程序,通过jstack找到死锁的线程和代码信息

相关文章

  • java死锁问题排查

    首先熟悉一下jstack命令的用法,主要参数有-F -l -m 如下图: 模拟一段死锁的java代码,如下: ``...

  • Java相关的性能调优方案

    本文介绍了在性能测试过程中Java进程消耗CPU过高的问题排查方法、线程死锁问题排查方法和内存泄露的排查方法 Ja...

  • Java程序死锁,3种方式快速找到死锁代码

    java程序中出现死锁问题,如果不了解排查方法,是束手无策的,今天咱们用三种方法找到死锁问题。 运行下面代码 程序...

  • 如何快速排查死锁?如何避免死锁?

    前言 相信程序员都会碰上这样的问题,Java死锁如何排查?又如何解决呢?那么,何为死锁呢?死锁是指两个或两个以上的...

  • java程序死锁,3种方式快速找到死锁代码

    java程序中出现死锁问题,如果不了解排查方法,是束手无策的,今天咱们用三种方法找到死锁问题。 运行下面代码 pa...

  • java死锁排查

    锁是个非常有用的工具,运用场景非常多,因为其使用起来非常简单,而且易于理解。但同时它也会带来一些困扰,那就是可能会...

  • java死锁排查

    多个线程在竞争锁的过程中彼此之间形成堵塞的现象 排查 jstack查看线程以及堆栈信息 jconsole可视化工具...

  • 死锁问题排查

    首先使用jps查询进程ID然后使用jstack和进程ID查询堆栈日志信息。

  • 死锁问题排查

    最近在处理现场问题中偶然发现从日志中发现事务间死锁,与以往认知不大相符,故而进行记录。1.死锁死锁一般指的是两个事...

  • JAVA死锁排查-性能测试问题排查思路

    死锁原因 Java发生死锁的根本原因是:在申请锁时发生了交叉闭环申请。即线程在获得了锁A并且没有释放的情况下去申请...

网友评论

      本文标题:java死锁问题排查

      本文链接:https://www.haomeiwen.com/subject/tcjxdftx.html