欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java檢測(cè)死鎖案例

 更新時(shí)間:2021年07月01日 10:02:54   作者:又起風(fēng)了  
這篇文章主要介紹了Java檢測(cè)死鎖案例,本文列舉了導(dǎo)致死鎖的程序,通過(guò)使用jconsole工具進(jìn)行檢測(cè)等,講述了避免死鎖的方法,需要的朋友可以參考下

導(dǎo)致死鎖的程序

package com.study.train;

import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
import java.lang.reflect.Field;
import java.util.*;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.FutureTask;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

import static java.lang.Thread.yield;

public class Main extends Thread{
    private Object o1;
    private Object o2;
    Main(Object oa,Object ob,String name) {
        super(name);
        o1 = oa;
        o2 = ob;
    }

    @Override
    public void run() {
        synchronized (o1) {
            System.out.println("thread: "+Thread.currentThread().getName() + " get lock");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            synchronized (o2) {
                System.out.println("two lock is get");
            }
        }
    }

    public static void main(String[] args) throws InterruptedException {
       Object oj1 = new Object();
       Object oj2 = new Object();
       Main m1 = new Main(oj1,oj2,"thread1");
       Main m2 = new Main(oj2,oj1,"thread2");
       m1.start();
       m2.start();
       m1.join();
       m2.join();
    }
}


1.jconsole工具檢測(cè)

在這里插入圖片描述

2. jsp+jstack

linux上可以先使用top | grep java,查找忙的線程pid,然后拿到該線程id進(jìn)行分析,jstakc pid。

在這里插入圖片描述

在這里插入圖片描述

避免死鎖的方法

  • 1.盡量避免使用多個(gè)鎖
  • 2.如果一定要使用多個(gè)鎖,可以考慮順序獲取鎖,這樣就類似破壞了環(huán)路等待條件
  • 3.使用嘗試獲取鎖的方法,如果無(wú)法獲取,就將本身已經(jīng)獲取到的鎖釋放,類似破壞不可剝奪條件。
    銀行家算法屬于檢測(cè)是不是會(huì)存在死鎖,這種做法實(shí)際上也是破壞環(huán)路等待條件的發(fā)生。

到此這篇關(guān)于Java檢測(cè)死鎖案例的文章就介紹到這了,更多相關(guān)Java死鎖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論