今天写一个死锁的实例吧

死锁的成因和对应的解决方案 什么!!!快面试了🤔,这些死锁问题你还不清楚吗😎? 阅读详情

死锁

这个词相信大家都听说过,或者也明白它的意思,但是不知道如何去实现,今天咱就写一个死锁的实现。

实现死锁前咱们在回顾一下死锁的概念:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。(这是百度百科给的定义)

形象比喻一下把,比如我有一个鸡蛋 ,你也有一个鸡蛋,我觉得你会把你的鸡蛋给我, 而你同样也会觉得我会把我的鸡蛋给你,我们都会等待着对方把自己的鸡蛋给彼此,然后我们就一直等一直等一直等…(鸡蛋臭了)

上代码

public class A {

private static Object lock1 = new Object();
private static Object lock2 = new Object();
public static void main(String[] args) {

    new Thread(){
        @Override
        public void run(){
            synchronized (lock1){
                System.out.println("线程1得到了锁1");

                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                synchronized (lock2){
                    System.out.println("线程1得到锁2");
                }
            }
            System.out.println("线程1结束了");
        }
    }.start();

    new Thread(){
        @Override
        public void run(){
            synchronized (lock2){
                System.out.println("线程2得到了锁2");

                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                synchronized (lock1){
                    System.out.println("线程2得到锁1");
                }
            }
            System.out.println("线程2结束了");
        }
    }.start();
	 }
  }

在这里插入图片描述

两个线程相互得到锁1,锁2,然后线程1等待线程2释放锁2,线程2等待线程1释放锁1,两者各不相互,这样形成死锁。

面试官:用SQL模拟一个死锁 有读者说面试被问到怎么用SQL模拟数据库死锁? 粉丝表示对Java中的死锁还是略知一二的,但是突然用SQL写死锁的案例之前还真没遇到过,这个问题没答上来。所以今天就带大家一起来看下怎么用SQL让数据库中产生死锁。 什么是死锁 说到死锁,还是先来复习下什么是死锁吧。 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 数据库死锁是指两个资源互相等待,如果 阅读详情

相关推荐

聚宽策略实盘新路径:不开通QMT , 小资金自动化交易解决方案

聚宽策略实盘新路径:不开通QMT , 小资金自动化交易解决方案

u011111246的博客 1467

关于死锁和活锁的形象描述

死锁(deadlock)和活锁(livelock)是并发应用程序经常发生的问题,也是多线程编程中的重要概念,以下是对死锁和活锁的形象描述。现有个过道,两个人宽,两侧迎面走来两个人A和B。死锁的情况:A和B都不是讲礼貌的人,都不愿给别人让路,所以A和B都在等对方让路,导致谁也过不去。活锁的情况:A和B都是很讲礼貌的人,都主动给别人让路。A往左移,同时B往右移;A往

老紫竹的专栏 7736

SPSS与SPSS Modeler,不一样的世界

1. SPSS软件的前世今生 1.1 IBM SPSS的由来 与数据打过交道的小伙伴们,应该对SPSS软件都不陌生。SPSS是世界上最早的统计分析软件,由斯坦福大学的三个研究生大牛于1968年研发,同时还成立了SPSS公司。SPSS最初的全称是Solutions Statistical Package for the Social Sciences(社会科学统计软件包),随着SPSS产品服务领...

qq_24339451的博客 3613

死锁的产生以及案例

死锁

java_XTao的博客 185

机器学习篇-KNN算法实现鸢尾花模型和手写数字识别模型

一个样本最相似的k个样本中的大多数属于某一个类别, 则该样本也属于这个类别类似于: 近朱者赤近墨者黑回归机器建模流程:数据获取数据基本处理(空值和非法值)特征工程(特征提取, 特征预处理(归一化, 标准化), 特征降维, 特征选择, 特征组合)模型训练模型预测模型评估# 1. 定义函数 dm01_load_iris(), 用于加载 鸢尾花数据集, 并简单查看下数据集的各部分.# 1. 加载数据集.​# 2. 打印iris_data, 发现其实是1个: 字典.​。

m0_60916732的博客 2403

SMIC Memory配置与Library Compiler实战:从lib到db的高效转换

本文详细介绍了SMIC Memory Compiler的配置要点与使用Library Compiler将.lib文件高效转换为.db文件的完整流程。文章深入解析了关键配置参数对性能和面积的影响,并提供了从交互式操作到自动化脚本的实战指南,帮助数字芯片设计工程师顺利完成存储器模型的生成与集成,确保Design Compiler能正确调用。

weixin_28314575的博客 335

死锁实例

1、死锁实例1 ,哲学家饿死 pthread_mutex_t         dinner_lock = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t         dinner_cond = PTHREAD_COND_INITIALIZER; int                                 order = 0; se

EveryDayOneHour的博客 444

数据驱动的老年人健康管理与生活品质提升实践研究

摘要 全球人口老龄化趋势显著,2025年65岁以上人口预计达8.57亿,中国老年人口已突破3亿。老年人健康挑战突出,75%以上患慢性病,且独居老人心理健康与应急需求迫切。数据驱动的健康管理通过智能设备(如跌倒检测、远程监测)和AI技术(如疾病预测算法)提升效率,改善生活品质。研究提出差异化需求解决方案,如慢性病患者的持续监测与用药管理,高龄老人的综合护理服务,并探讨政策与商业模式以推动智慧养老产业发展,2024年市场规模已达6.8万亿元。

聚焦程序设计语言理论与前沿技术落地,拆解代码世界的底层逻辑,探索语言设计的 “创造与沟通” 之道。从编译原理、类型系统到 AI 技术在金融、医疗、制造、养老、大健康等领域的实战案例,分享硬核技术干货与工程化思考。 1631

死锁问题&实例

【代码】死锁问题&实例。

yuqu1028的博客 470

Matlab实现雷达波位编排

1 简介 %本程序用于雷达球坐标系到正弦空间坐标系的转换,以及相控阵雷达的波位编排。 2 完整代码 ​%070228添加波位数据保存clear allclose allclc%波束宽度,单位:度BeamWidth = 3.6;theta05 = round(sin(BeamWidth*pi/180)*1000)/1000;%雷达作用空域AZ = [-15 15]; %方位角范围(雷达球坐标系),单位:度EL = [0 30]; %俯仰角范围(雷

qq_59747472的博客 2479

【国密】基于SM2的协同签名与协同解密方案

两方协同签名指客户端与服务端协同完成签名、验签操作,具体实现方案参考了信工所专利[3]。在业务应用中,两方或多方的协同签名一般采用门限签名方案可以用来构造。门限密码算法在多方协作的相关场景中应用十分广泛,可以实现数据联合授权、认证、密钥安全恢复、密钥安全交换等需求,在诸多分布式多方计算协议中均可见其身影。在上述两方协同签名方案中,最巧妙的地方在于签名值s分量的构造,通过一些列数学变换,得以恢复。以下从两方协同签名方案介绍入手,介绍门限密码在协同签名中的应用。解决上述问题的关键在于门限密码算法的巧妙构造。

听雨草堂 8389

java中如何写一个死锁例子

你没看错,今天是要写一个死锁程序。通过自己写一个死锁例子,就能理解为什么会发生死锁。 但在写这个程序前,是不是要知道什么情况下才会发生死锁(假装我开头没说过那句话)。我们先抛开一系列复杂的业务逻辑,单纯从语法上来分析。 死锁的定义是,两个或两个以上的线程或进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。 是不是觉得定义比较抽象,我们简化一下,就当成只有两个线程。现在有线

宇不语的博客 1万+

什么是 SAP ABAP Secure Storage

此过程将单独的密钥存储在密钥路径中的密钥文件中,并自动使用新加密密钥加密安全存储中的所有数据记录。需要注意的是,不要在没有命令行工具的情况下操作密钥文件,例如,不要用不同的版本替换密钥文件,否则,安全存储中的数据记录可能变得不可读。当需要访问这些数据时,系统会对其进行解密。文件系统中的安全存储(Secure Storage in the File System)也是 SAP NetWeaver Application Server for ABAP 的一部分,主要用于安全存储连接相关的数据,如密码等。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 439

java写一个死锁的简单例子

自己今天想到死锁,就试着写了一个。 package com.ljl.thread; public class DealLock implements Runnable { private int flag = 1; // 此对象必须是静态的,同步必须是被多个线程共

自己的精彩人生只有自己才能走出来 3716

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

如何写一段死锁代码

如何写一段死锁代码Intro上次介绍了如何写一段代码造成 StackOverflow ,今天来玩一下,看如何写一段代码造成死锁什么是死锁首先我们需要明确一下什么是死锁,造成死锁需要满足哪...

dotNET跨平台 390

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

面试相关——我今天要把死锁弄清楚

死锁 死锁是指由于两个或多个进程(线程同样)互相持有对方所需要的资源,导致这些线程处于等待状态(阻塞现象),没有外力干扰的情况下无法继续执行。互相等待对方释放资源,产生死锁。 产生死锁的必要条件(4个) 1. 资源互斥条件: 进程对于所分配到的资源具有排他性,一个资源只能由一个进程占用,知道该进程释放该资源。 2. 请求保持条件: 进程会请求所有需要的资源,如果过程中因为缺少资源而阻塞,已...

Lazyboy_的博客 497

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

死锁的代码 java,如何写一段死锁代码

如何写一段死锁代码Intro上次介绍了如何写一段代码造成 StackOverflow ,今天来玩一下,看如何写一段代码造成死锁什么是死锁首先我们需要明确一下什么是死锁,造成死锁需要满足哪些条件,知道这些就可以轻松写出一段死锁代码了死锁 是指两个或两个以上的进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁 状态或系统...

weixin_36034883的博客 395

一个线程死锁的例子

今天我们看一个线程死锁的例子。 之前接触过的死锁 bug 都存在两个锁的情况,前段时间遇到一个由于写法问题导致一个锁的时候也出现了死锁的情况。 代码流程大致如下: pthread_mutex_t mutex = -1; void* thread_fun(void *arg) { pthread_t pid = pthread_self(); if(-1 == mutex) { pth...

jxgz_leo的博客 1201

android 死锁案例,Watchdog死锁实例分析

更多干货,请关注微信公众号: tmac_loverjava1. 什么是Watchdog对Android稍微有所了解的朋友应该都听过ANR这个东西,它的全称是ApplicationNotResponding, 也就是由于某种缘由应用程序卡住了,没有任何响应。android其实在framework里,也会有相似ANR的东西产生,咱们能够叫它是“SystemNotResponding”, 形成这个的缘由...

weixin_35695430的博客 1322

MySQL死锁,死锁产生的4个必要条件,死锁案例, 如何避免死锁

死锁是指2+的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

weixin_44797327的博客 2432

教你如何快速排查死锁,如何避免死锁!

文章目录前言实例通过jdk工具jps、jstack排查死锁问题步骤一:使用jsp查找程序进行通过jdk提供的工具jconsole排查死锁问题通过jdk提供的工具VisualVM排查死锁问题如何避免死锁?1. 正确的顺序获得锁2. 超时放弃总结 前言 相信程序员都会碰上这样的问题,Java死锁如何排查?又如何解决呢?那么,何为死锁呢?死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此...

知其然知其所以然 3164

面试官:请用SQL模拟一个死锁

有读者说面试被问到怎么用SQL模拟数据库死锁? 这位读者表示对Java中的死锁还是略知一二的,但是突然用SQL写死锁的案例之前还真没遇到过,这个问题没答上来。所以今天就带大家一起来看下怎么用SQL让数据库中产生死锁。 什么是死锁 说到死锁,还是先来复习下什么是死锁吧。 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 数据库死锁是指两个资源

qq_39652397的博客 1054

一个死锁的case

问题描述 今天线上流水的consumer出现了一个insert导致的死锁问题,这里通过一个DEMO复现一下case的整个过程,并进行详细的分析。 表结构如下: mysql> show create table test_table; | Table | Create Table | test_table | CREATE TA

java_xiaoo的博客 134

中秋遇到mysql死锁怎么办

中秋放假期间遇见mysql死锁问题怎么办,莫慌莫慌,今天老万教你遇到了mysql死锁应该怎么办。

弹指天下 7047

Mysql insert也会发生死锁?

今天给大家分享我们前几天线上遇到的一个Mysql死锁的案列

taoerchun的专栏 3790

详解Java死锁-检测与解决

死锁的本质:当多个线程互相等待对方释放资源时,就会产生死锁。死锁问题在并发编程中是一个常见的问题,特别是在使用共享资源和锁时。理解死锁的四个必要条件(互斥、占有和等待、不可剥夺、循环等待)是分析和解决死锁问题的基础。

宋小黑的博客 1412
上一篇: 常见的数据结构
下一篇: Spring基于Xml注入bean的几种方式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值