什么是死锁?如何产生死锁?死锁的必要条件?怎么解决死锁?

🔒1、什么是死锁

死锁是一个非常让程序猿烦恼的问题,一旦所写的程序有了死锁,那么程序就无法执行下去,会出现严重的 bug,并且死锁非常隐蔽,我们不会轻易发现它,在开发阶段,不经意期间我们就会写出死锁,很难检测出来。

那么什么是死锁呢?竟然让我们如此烦恼。


“死锁”就是2个或2个以上的线程互相持有对方想要的资源,导致各自处于阻塞等待状态,致使程序无法执行下去,这就是“死锁”。

简单来说:一共有两个线程两把锁,T1线程拿到了A锁,T2拿到了B锁,但是T1还想要B锁,T2还像要A锁,谁也不释放锁,就会产生死锁

两个线程两把锁,t1 和 t2 各自对 锁A 和 锁B 加锁,再尝试获取对方的锁。线程在竞争资源,导致死锁。

以下两张图希望可以帮到你

🔒2、死锁的三个典型情况

🔒2.1情况一

一个线程一把锁,连续加两次。如果锁是不[可重入锁](https://so.csdn.net/so/search?q=可重入锁&spm=1001.2101.3001.7020),就会死锁。
Java 里的 synchronized 和 ReentrantLock 都是可重入锁

🔒2.2情况二

两个线程两把锁,t1 和 t2 各自对 锁A 和 锁B 加锁,再尝试获取对方的锁。线程在竞争资源,导致死锁。

下面图解展示以下这种情况:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/238081.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为何要隐藏IP地址?网络上哪些行为需要隐藏IP和更换IP?

网络已经成为现代人生活的重要组成部分,人们在网络上交流、学习、娱乐、购物等。但是,在享受网络带来的便利时,我们也需要时刻保护自己的隐私和安全。其中,IP地址作为网络通信中的重要标识,如何隐藏以及在哪些情况下需…

数据中台具体是怎么解决数据孤岛的?_光点科技

在数字化时代,数据已成为企业的核心资产。然而,由于历史遗留问题、部门壁垒等因素,很多企业面临着“数据孤岛”的问题。数据孤岛是指在一个组织内,数据被分散在不同的系统中,彼此隔离,不能有效整合和利用。…

建设银行RPA应用实践

当下,银行业正在从“互联网金融”时代向“新科技金融”时代迈进,在目前经济形势严峻、人力成本持续增加的经营背景下,以科技解放人力将是智能化银行发展的必然趋势。RPA技术为解决上述问题提供了崭新的路径。 RPA(机器人流程自动…

软件开发的生命周期:从构想到维护

目录 需求分析阶段 设计阶段 实现阶段 测试阶段 部署阶段 维护阶段 结语 软件开发是一项复杂而又精密的工程,它的整个过程被称为软件开发生命周期。这一生命周期涵盖了从最初构想到最终维护的各个阶段,每个阶段都有其独特的任务和活动。在本文中&…

与原有视频会议系统对接

要实现与原有视频会议系统对接,需要确保通信协议的一致性。连通宝视频会议系统可与第三方视频会议系统对接。实现与第三方会议系统对接还可以使用会议室连接器,可以确保不同系统之间的数据传输和交互。 具体对接流程可能因不同品牌和类型的视频会议系统而…

小红书产品种草的特点是什么,怎么选择种草形式?

随着小红书不断占领各个群体的移动端,这也标志着平台的种草形式慢慢成熟,但是很多时候,掌握正确的方式可能会使你的产品种草更为快捷。今天,我们为大家分享下小红书产品种草的特点是什么,怎么选择种草形式?…

程序员养生指南:平衡工作与健康的七大要点

目录 前言1 养成运动的习惯2 合理安排工作和休息时间3 避免长时间的坐姿4 合理饮食5 定期体检6. 保持社交与休闲7. 持续学习和进步结语 前言 随着科技的快速发展,程序员的工作也变得愈发重要。然而,长时间面对计算机的工作方式也带来了一系列健康问题。…

食品生产温湿度监控,这个方法最简单!

随着科技的不断进步,温湿度监控在各行业中变得愈发重要。无论是在医疗、制药、食品生产、物流还是信息技术领域,保持适当的温湿度水平对于维护产品质量和设备稳定性至关重要。 在这个背景下,温湿度监控系统成为企业追求高效运营和产品质量保障…

【Python表白系列】无限弹窗,满屏表白代码来啦(完整代码)

文章目录 满屏表白代码环境需求完整代码详细分析系列文章 满屏表白代码 环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需…

2023年11月25日~12月1日周报(继续调试OpenFWI代码)

目录 一、前言 二、学习情况 2.1 train.py的理解 2.11 定义数据集 2.12 定义损失函数、优化器 2.13 加载模型 2.14 开始训练 2.2 test.py的理解 2.21 定义测试集 2.22 加载模型 2.23 开始test 三、遇到的部分问题及解决 3.1 module torchvision has no attribute…

ESP32-Web-Server编程- 通过滑动条向 Web 提交数据

ESP32-Web-Server编程- 通过滑动条向 Web 提交数据 概述 上一节我们讲述了通过文本框向 ESP32 发送字符串、数字。有时,我们需要向 ESP32 发送连续的值,这种需求可以通过在网页端实现滑动条来实现。 需求及功能解析 本节演示如何在 ESP32 上部署一个…

TCP简介及特性

1. TCP协议简介 TCP是Transmission Control Protocol的简称,中文名是传输控制协议。它是一种面向连接的、可靠的、基于IP的传输层协议。两个TCP应用之间在传输数据的之前必须建立一个TCP连接,TCP采用数据流的形式在网络中传输数据。TCP为了保证报文传输的…