首页 > 其他分享 >死锁编码及定位分析

死锁编码及定位分析

时间:2024-01-03 17:32:26浏览次数:31  
标签:lockB 编码 lockA String Thread 定位 死锁 public

死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉将无法进行下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因为争夺有限的资源而陷入死锁。

死锁产生的主要原因:

1.系统资源不足。

2.进程运行推进的顺序不合适

3.资源分配不当。

死锁案例

import java.util.concurrent.TimeUnit;

public class HolderLockThread implements Runnable {

    private String lockA;

    private String lockB;

    public HolderLockThread(String lockA, String lockB) {
        this.lockA = lockA;
        this.lockB = lockB;
    }

    @Override
    public void run() {
        synchronized (lockA) {
            System.out.println(Thread.currentThread().getName() + "\t 自己持有:" + lockA + "\t 尝试获得:" + lockB);
            try {TimeUnit.SECONDS.sleep(2);} catch (InterruptedException e) {e.printStackTrace();}
            synchronized (lockB) {
                System.out.println(Thread.currentThread().getName() + "\t 自己持有:" + lockB + "\t 尝试获得:" + lockA);
            }
        }
    }
}

客户端

public class DeadLockDemo {
    public static void main(String[] args) {
        String lockA = "lockA";
        String lockB = "lockB";
        new Thread(new HolderLockThread(lockA,lockB),"Thread1").start();
        new Thread(new HolderLockThread(lockB,lockA),"Thread2").start();

        System.out.println("complete");
    }
}

执行结果:

死锁编码及定位分析_死锁


解决方式:

jps 命令定位进程号

jstack找到死锁查看

死锁编码及定位分析_死锁_02

死锁编码及定位分析_jstack_03


标签:lockB,编码,lockA,String,Thread,定位,死锁,public
From: https://blog.51cto.com/u_11315052/9087291

相关文章

  • 字符集和编码格式的简单学习
    字符集和编码格式的简单学习背景因为遇到了一个数据库乱码的问题,所以想着能够学习和总结一下字符集和编码格式相关的内容内容可能比较宏大,我这边能够写的可能不是很多.希望是一个完善和提高自己的机会学习的资料https://deerchao.cn/blog/posts/unicode.html大佬的文档很牛......
  • 优维科技2024战略定位:新一代运维核心系统提供商
    01 经济复苏「走远路」过去几年,全球经济持续低迷,2024会迎来转机吗?回顾2023年,尽管经济复苏动能式微,但全球经济因有效控制通胀而展现出来的韧性,让包括中国在内的大部分经济体躲过了深度衰退的陷阱;展望2024年,上半年全球经济增长动能或进一步衰减,但下半年有望以新的复苏周期终止并替代......
  • macOS Ventura 13.5.1 (22G90) 正式版发布,修复定位服务无法授权问题 (ISO、IPSW、PKG
    macOSVentura13.5.1(22G90)正式版发布,修复定位服务无法授权问题(ISO、IPSW、PKG下载)2023年8月17日(北京时间18日凌晨)macOSVentura13.5.1发布,修复了“系统设置”-“隐私和安全性”中“定位服务”无法授权管理的问题。推荐所有用户更新。台前调度等新功能帮助......
  • 音视频编码基础知识
    视频编码指的是通过特定的压缩技术将一种视频格式文件转换成另一种视频格式文件的过程。常见的视频编码:MPEG类MPEG1(VCD等使用),MPEG2(DVD等使用),MPEG4(DivX,XviD是它的变体),MPEG4AVC等H.26x类H.261,H.262,H.263,H.263+,H.263++,H.264,H.265常见的音频编码:MPEGAudioLayer1/2,MPE......
  • Java超高精度无线定位技术--UWB (超宽带)人员定位系统源码
    UWB室内定位技术是一种全新的、与传统通信技术有极大差异的通信新技术。它不需要使用传统通信体制中的载波,而是通过发送和接收具有纳秒或纳秒级以下的极窄脉冲来传输数据,从而具有GHz量级的带宽。UWB(超宽带)高精度定位系统是一种利用超宽带技术实现精确定位的解决方案。该系统使用高......
  • 稀疏自编码与深度学习的结合
    1.背景介绍稀疏自编码(SparseAutoencoding)是一种深度学习技术,它主要用于处理稀疏数据,如文本、图像等。稀疏自编码的核心思想是将稀疏数据映射到低维的编码空间,从而减少数据的维度并提高计算效率。在深度学习领域,稀疏自编码被广泛应用于图像压缩、文本摘要生成、语音识别等任务。在......
  • Android 线程死锁场景与优化
    前言线程死锁是老生常谈的问题,线程池死锁本质上属于线程死锁的一部分,线程池造成的死锁问题往往和业务场景相关,当然更重要的是对线程池的理解不足,本文根据场景来说明一下常见的线程池死锁问题,当然也会包含线程死锁问题。线程死锁场景死锁的场景很多,有线程池相关,也有与线程相关,线程相......
  • 浏览器原生支持JS Base64编码解码
    1.Base64解码:vardecodedData=window.atob('内容');2.Base64编码:varencodedData=window.btoa('base64编码内容');3.中文转换报错?若中文Base64数据转换有报错问题,可以中文先encode转码和decode编码,示例如下:3.1使用:window.btoa(window.encodeURIComponent('内......
  • 如何从零开始实现TDOA技术的 UWB 精确定位系统(一)
    前言这是一个系列文章,将向你介绍如何从零开始实现一个使用TDOA技术的UWB精确定位系统。重要提示(劝退说明):Q:做这个定位系统需要基础么?A:文章不是写给小白看的,需要有电子技术和软件编程的基础Q:你的这些硬件/软件是开源的吗?A:不是开源的。这一系列文章是授人以“渔”,而不是授人......
  • python_selenium定位页面元素
    页面元素常用的定位方法有id、name、css、xpathid和name直接通过对应的值定位class属性值有多个值时,使用css选择器定位只需要其中一个属性值即可,使用xpath时,属性值需要全部写上示例:<inputtype=""autocomplete="on"placeholder="密码"id="pwdid"name="password"c......