zoukankan      html  css  js  c++  java
  • 死锁编码及定位分析?

    代码:

    /**
     * @desc 死锁
     * @Author xw
     * @Date 2019/8/23
     */
    public class DeadLockDemo {
        public static void main(String[] args) {
            String lockA = "lockA";
            String lockB = "lockB";
            new Thread(new HoldLockThread(lockA, lockB), "AAA").start();
            try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); }
            new Thread(new HoldLockThread(lockB, lockA), "BBB").start();
        }
    }
    
    class HoldLockThread implements Runnable {
        private String lockA;
        private String lockB;
    
        public HoldLockThread(String lockA, String lockB) {
            this.lockA = lockA;
            this.lockB = lockB;
        }
    
        @Override
        public void run() {
            synchronized (lockA) { // 锁A执有锁B
                System.out.println(Thread.currentThread().getName() + "	 自己执有:" + lockA + "	 尝试获取:" + lockB);
                try { TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); }
                synchronized (lockB) {
                    System.out.println(Thread.currentThread().getName() + "	 自己执有:" + lockB + "	 尝试获取:" + lockA);
                }
            }
        }
    } 
    View Code

    (1)jps命令定位进程号

    (2)jstack死锁查看

  • 相关阅读:
    SNMP简介
    命令模式
    牛顿法
    仿射函数
    schedule
    命令模式
    牛顿法
    schedule
    仿射函数
    适配器模式
  • 原文地址:https://www.cnblogs.com/ice-line/p/11423995.html
Copyright © 2011-2022 走看看