首页 > 编程语言 >Java锁 死锁及排查 JVM 工具 jconsole 工具 排查死锁

Java锁 死锁及排查 JVM 工具 jconsole 工具 排查死锁

时间:2025-01-19 19:02:10浏览次数:3  
标签:Thread Object System 排查 死锁 println 工具

目录

概述

死锁案例 (面试)

如何排查死锁

使用 JVM 工具排查死锁

使用 jconsole 工具排查死锁

细节


概述

死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力于涉那它们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足。

死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。

死锁案例 (面试)

import java.util.concurrent.TimeUnit;

public class DeadLockDemo {

    // 展示死锁
    static  Object lockA = new Object();
    static  Object lockB = new Object();
    public static void main(String[] args) {
        new Thread(() ->{
            synchronized (lockA){
                System.out.println(Thread.currentThread().getName()+"\t"+"自己持有A锁 期待获得B锁");
                try {
                    TimeUnit.SECONDS.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized (lockB){
                    System.out.println(Thread.currentThread().getName()+"\t"+"在自己持有A锁的情况下 获取了B锁");
                }
            }
        },"a").start();

        new Thread(() ->{
            synchronized (lockB){
                System.out.println(Thread.currentThread().getName()+"\t"+"自己持有A锁 期待获得B锁");
                try {
                    TimeUnit.SECONDS.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized (lockA){
                    System.out.println(Thread.currentThread().getName()+"\t"+"在自己持有A锁的情况下 获取了B锁");
                }
            }
        },"b").start();
    }

}

死锁

如何排查死锁

使用 JVM 工具排查死锁

用 jps 查找进程信息

jps -l

用 jstack 追踪堆栈信息

jstack 48660

使用 jconsole 工具排查死锁

运行死锁

打开 Java 监视和管理控制台

检测死锁

细节

不可以 String 一把锁

标签:Thread,Object,System,排查,死锁,println,工具
From: https://blog.csdn.net/qq_30500575/article/details/145246035

相关文章

  • MySQL 死锁处理
    死锁是指两个或两个以上的事务在执行过程中,因争夺锁资源而造成的一种互相等待的现象。1数据库层面解决死锁的两种方式1、解决死锁的问题最简单的方式是不要有等待,将任何的等待都转化为回滚,并且事务重新开始。 这种没有死锁问题的产生。在线上环境中,可能导致并发性能的下降,甚......
  • sqoop--使用工具
    1.将工具名称作为参数[root@master~]#sqoophelp25/01/1918:22:20INFOsqoop.Sqoop:RunningSqoopversion:1.4.7usage:sqoopCOMMAND[ARGS]Availablecommands:codegenGeneratecodetointeractwithdatabaserecordscreate-hive-tableImport......
  • Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,不输G
    大家好,我是编程乐趣。行业诸多大佬一直在说:“‌2025年将是AI应用元年‌”,虽然说大佬的说法不一定对,但AI趋势肯定没错的。对于我们程序员来说,储备AI应用开发技能,不管对找工作、接项目、创业肯定是不错的选择。从今天开始,我将会学习和研究Phi小模型,并基于此模型开发一些小D......
  • 负载测试工具的选择与性能分析
    在现代软件开发中,负载测试已成为保证应用系统稳定性与可靠性的重要环节。无论是高并发的互联网平台,还是分布式微服务架构下的系统,负载测试都在确保系统在各种负载条件下能高效运转的过程中扮演着至关重要的角色。然而,面对市面上琳琅满目的负载测试工具,如何选择合适的工具并进......
  • 【Java】Java UML 类图绘制解析:结构与工具类型详解
    前言常用UML绘图工具1、VisualParadigm2.Lucidchart3.Draw.io(现名diagrams.net)4.PlantUML(推荐)5.StarUML类与类之间的关系UML中的关系是面向对象关系。......
  • 两款开源的微信对话生成器,做成了在线小工具
    如果你也想在社交媒体上、视频创作中或者日常娱乐里,展现出与众不同的一面,那么微信对话生成器绝对是你不可错过的好帮手。今天,就让我们一起走进3M万能在线工具箱https://3m.panziye.com中的两款微信对话生成器,看看它们如何为我们的创意插上翅膀。微信对话在线生成器这款微信对话......
  • 推荐一款非常好用的在线 SSH 管理工具
    前言SSH工具在远程连接、文件传输、远程管理和增强安全性等方面发挥着重要作用,是我们开发人员和系统管理员不可或缺的工具。今天大姚给大家推荐一款非常好用的在线SSH管理工具:Xterminal。工具介绍Xterminal一个好用的在线SSH、SFTP工具,支持跨平台(Windows、Linux、MacOS)运行,......
  • 使用Wireshark抓包工具
    下载Wireshark:https://www.wireshark.org/选择要监听的网卡用户界面数据包分层结构关于过滤器分为显示过滤器和捕获过滤器显示过滤器:过滤已捕获的数据包,符合条件的进行显示ip.addr==ip地址#过滤所有与该网站相关的数据包ip.addr==ip地址&&http#按照协......
  • VUE最新状态管理工具
    大家好,我是程序视点的小二哥!前言在VUE项目开发中,一些数据常常被多个组件频繁使用,为了管理和维护这些数据,就出现了状态管理模式。今天小二哥要给大家推荐的不是VueX,而是称为新一代的状态管理工具的Pinia.js。添加图片注释,不超过140字(可选) 关于Pinia.jsPinia.js由Vue.......
  • 多功能水印添加工具
    水印管家是一款功能强大的水印添加软件,支持图片和视频水印的添加。为作品添加个性化标识,水印管家都能满足您的需求。功能特点1.多语言支持水印管家支持多种语言,包括中文简体、英语、德语、法语、意大利语、日语等,满足不同用户的语言需求。2.图片加水印轻松为您的图片......