zoukankan      html  css  js  c++  java
  • 死锁的产生以及定位死锁

    死锁的产生:

      1、两个线程,各自拥有一个加锁的资源,同时都想获取对方手中的资源。

    代码示例:  

    public class DeadLock {
      public static void main(String[] args) {
        Object a = new Object();
        Object b = new Object();
        new Thread(new MyThread(a,b),"A").start();
        new Thread(new MyThread(b,a),"B").start();
      }
    }
    class MyThread implements Runnable{
      private Object objectA;
      private Object objectB;
      public MyThread(Object objectA, Object objectB) {
        this.objectA = objectA;
        this.objectB = objectB;
      }
      @Override
      public void run() {
        synchronized (objectA){
          try {
            Thread.sleep(100);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
          synchronized (objectB){
            System.out.println(Thread.currentThread().getName()+" run 。");
          }
        }
      }
    }
    

    死锁的定位:jconsole

    由上图可以发现,我们创建的线程A,B都处在阻塞状态。

    点击 “检测死锁” 按钮,即可定位死锁发生的地方,如下图:

     

  • 相关阅读:
    webpack压缩图片之项目资源优化
    vue v-cloak 指令 处理页面显示源码
    js 获取url 参数
    element-ui Drawer抽屉组件封装
    js中的this指向
    对js闭包的理解
    vue作用域插槽
    flex布局实战
    vue 组件之间传值
    js 面试题一
  • 原文地址:https://www.cnblogs.com/chen--biao/p/11350205.html
Copyright © 2011-2022 走看看