Java中死锁问题如何排查

2023-11-08


问题描述

在java程序中碰到运行未停止,如何证明是死循环还是死锁问题呢?可以使用Java中自带的命令jps -l 用来查看当前运行的进程号,在使用jstack 进程号命令查看当前进程的堆栈信息

//死锁代码
class DeadLockRes {
    private String lock1 = "lockAA";
    private String lock2 = "lockBB";

    public void m1() {
        synchronized (lock1) {
            System.out.println(Thread.currentThread().getName() + "\t正拥有" + lock1 + "锁");
            System.out.println("试图拿到" + lock2);
            synchronized (lock2) {

            }
        }
    }

    public void m2() {
        synchronized (lock2) {
            System.out.println(Thread.currentThread().getName() + "\t正拥有" + lock2 + "锁");
            System.out.println("试图拿到" + lock1);
            synchronized (lock1) {

            }
        }
    }
}

jps命令如下图:

在这里插入图片描述
jstack 进程号 命令如下图:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中死锁问题如何排查 的相关文章

  • Java中ArrayList的交集和并集

    有什么方法可以做到这一点吗 我正在寻找 但没有找到 另一个问题 我需要这些方法 以便我可以过滤文件 有些是AND过滤器 有些是OR过滤器 就像集合论中的那样 所以我需要根据所有文件和保存这些文件的联合 相交 ArrayList 进行过滤 我
  • 不同帐户上的 Spring Boot、JmsListener 和 SQS 队列

    我正在尝试开发一个 Spring Boot 1 5 应用程序 该应用程序需要侦听来自两个不同 AWS 帐户的 SQS 队列 是否可以使用 JmsListener 注解创建监听器 我已检查权限是否正确 我可以使用 getQueueUrl 获取
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • java.lang.IllegalStateException:应用程序 PagerAdapter 更改了适配器的内容,而没有调用 PagerAdapter#notifyDataSetChanged android

    我正在尝试使用静态类将值传递给视图 而不是使用意图 因为我必须传递大量数据 有时我会收到此错误 但无法找出主要原因是什么 Error java lang IllegalStateException The application s Pag
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url

随机推荐

  • [1080]idea import引用报错

    从GIT上拉下代码后 出现这种情况 类正常 但是import是浅灰色 引用类有红色警告 代码中所有的引用都报错 重启idea 无效 删除引用的类与被引用的类中的代码 无效 重新加载maven 无效 最后 清理缓存后 恢复正常 File gt
  • 硬件系统工程师宝典(29)-----应用DC/DC要注意什么?

    各位同学大家好 欢迎继续做客电子工程学习圈 今天我们继续来讲这本书 硬件系统工程师宝典 上篇我们说到使用LDO时 除了要考虑输入 输出电压外 还要注意压差 最大输出电流等 今天我们来讲讲DC DC的应用分析 DC DC分类 将一个不受控的输
  • 台式电脑重装系统失败怎么办

    当大家使用一键重装系统软件给自己电脑重装系统的时候 都可能会遇到一些故障问题造成台式电脑重装系统失败的情况发生 那么大家遇到台式电脑重装系统失败怎么办呢 现在小编就教下大家相关的方法教程 大家一起来看看吧 工具 原料 系统版本 window
  • 【开源之美】nanomsg(2) :req/rep 模式

    req rep 模式显然就是类似http的应答模式 在某些基于短连接的进程间通讯方式上可以很方便的使用 下面我们举个例子 服务端 demo ifndef NANOMSGUTIL H define NANOMSGUTIL H include
  • [已解决] 数据库连接问题Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionExcept...

    我在学习SSM框架做一个小demo 时遇到了这个问题 具体的报错时 Error querying database Cause org springframework jdbc CannotGetJdbcConnectionExceptio
  • 真假难辨?来看看华为云区块链怎么搞定

    怎么证明你是你 你的合同是真合同 被骗 防被骗 怎么证明自己的证据是真实的 跑路 人间蒸发 怎么还原事实维护自己的合法产权 云 5G的普遍应用与流量平面化 促使数字化资产内容爆发式增长 数字合同 知识版权 书籍 视频 音乐 个人信息等在流通
  • FFT频谱分析原理

    FFT频谱分析原理 采样定理 采样频率要大于信号频率的两倍 N个采样点经过FFT变换后得到N个点的以复数形式记录的FFT结果 假设采样频率为Fs 采样点数为N 那么FFT运算的结果就是N个复数 或N个点 每一个复数就对应着一个频率值以及该频
  • 内外网电脑远程桌面教程(win10)

    内网远程桌面连接 1 要远程的用户必须有密码 设置本机固定ip 自行百度 2 关闭防火墙与修改 在 控制面板 Windows 防火墙 启用或关闭Windows防火墙 3 打开远程桌面设置 在 桌面 计算机 上右击 打开 属性 远程设置 然后
  • linux 的configure --prefix=/

    linux configure prefix 是 编译指定程序存放路径 不指定prefix 可执行文件默认shu放在 usr local bin 库文件默认放在 usr local lib 配置文件默认放在 usr local etc 其它
  • maven deploy plugin_(转)maven内部运行原理解析(一)

    原文来源于 http www jianshu com p 0fb5e3fb704d maven至今还是Java编程语言构建的事实标准 大部分项目还在使用maven来进行构建 因此了解maven内部运行的原理对定位和分析问题还是很有裨益的 本
  • @ComponentScan配置扫描多个包

    我的Spring版本是5 2 6 使用 ComponentScan扫描多个包的注解配置 Configuration ComponentScan basePackages bean dao service public class TxCon
  • js多方框输入密码_js 如何实现密码输入时,明文显示一秒后变成密文呢?

    function MaskedPassword passfield symbol if typeof document getElementById undefined typeof document styleSheets undefin
  • 解决windows下面的工程导入ubuntu下eclipse中文乱码

    把Windows下的工程默认GBK编码的 而Ubuntu默认是不支持GBK编码的 所以把windows下eclipse里面创建的工程导入到ubuntu下的eclipse里面 中文肯定会乱码 如果需要ubuntu支持GBK 可做如下修改 一
  • SpringSecurity学习笔记(二)加载的Filter,默认配置

    参考视频 编程不良人 SpringSecurity中的过滤器 以上图片来自官网 Security过滤器通过SecurityFilterChain API插入FilterChainProxy 过滤器的顺序很重要 通常不需要知道Spring S
  • ChatGPT对于留学生带来了哪些影响?留学生又应该如何使用?

    悉尼大学的赶DUE高峰期来得总是那么早 才开学四周 图书馆就已经被赶DUE人占领地满满当当 面对即将到来的大批量写作任务 不少同学们打起了ChatGPT的主意 2022年11月 人工智能 AI 工具ChatGPT Chat Generati
  • IDEA 创建web项目

    IntelliJ IDEA 13 新版本发布 第一时间去官网看了下 黑色的主题 很给力 大体使用了下 对于一开始就是用eclipse的童鞋们 估计很难从eclipse中走出来 当然 我也很艰难的走在路上 首先要说一点 在IntelliJ I
  • 不如来试试看这个AI大模型 感觉速度飞快,真的还挺不错呢!

    个人主页 极客小俊 作者简介 web开发者 设计师 技术分享博主 希望大家多多支持一下 我们一起进步 如果文章对你有帮助的话 欢迎评论 点赞 收藏 加关注 介绍 它是国产新一代AI智能模型 拥有跨领域的知识和语言理解能力 能够基于自然对话方
  • SpringBoot热部署 新版idea找不到Onupdate action

    改动到了这里
  • .metadata是什么项目文件_部署springboot+vue项目文档

    一 部署linux nginx 1 部署后台代码 1 1由于本人采用的是idea工具开发 所以在terminal中mvn clean package生成对应的jar包 此jar包可去对应文件所在目录的target查找 1 2将jar复制到l
  • Java中死锁问题如何排查

    问题描述 在java程序中碰到运行未停止 如何证明是死循环还是死锁问题呢 可以使用Java中自带的命令jps l 用来查看当前运行的进程号 在使用jstack 进程号命令查看当前进程的堆栈信息 死锁代码 class DeadLockRes