Java 写一个死锁的例子

devtools/2024/12/22 11:20:23/
java">public class DeadLock {public static void main(String[] args) {Object lock1 = new Object();Object lock2 = new Object();new Thread(new A(lock1,lock2),"线程A").start();new Thread(new B(lock1,lock2),"线程B").start();}
}class A implements Runnable {final private Object lock1;final private Object lock2;public A(Object lock1, Object lock2) {this.lock1 = lock1;this.lock2 = lock2;}@Overridepublic void run() {// 先拿第一个锁,再拿第二个锁synchronized (lock1) {System.out.println(Thread.currentThread().getName() + "拿到了第一个锁");try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}synchronized (lock2) {System.out.println(Thread.currentThread().getName() + "拿到了第二个锁");}}}
}class B implements Runnable {final private Object lock1;final private Object lock2;public B(Object lock1, Object lock2) {this.lock1 = lock1;this.lock2 = lock2;}@Overridepublic void run() {// 先拿第二个锁,再拿第一个锁synchronized (lock2) {System.out.println(Thread.currentThread().getName() + "拿到了第二个锁");try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}synchronized (lock1) {System.out.println(Thread.currentThread().getName() + "拿到了第一个锁");}}}
}

输出结果:
在这里插入图片描述


http://www.ppmy.cn/devtools/26981.html

相关文章

【Week-Y7】使用自己的数据集训练YOLO-v8

文章目录 一、官方环境配置与测试1. 配置环境2. 用官方图片测试(图片下载失败)3. 用本地图片测试,检查配置的环境是否可用 二、使用自己的数据集进行训练测试1. 执行split_train_val.py文件2. 执行python .\voc_label.py文件3. 创建fruit.yam…

K8S集群安装

安装Docker sudo yum remove docker* sudo yum install -yum-utils ​ #配置docker的yum镜像仓库 sudo yum-config-manager \ --add-rep \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ​ #安装指定版本docker... sudo yum install -y docker-ce-19.03…

PNC数字货币合约理财项目:抢占先机,学会新时代的数字理财

合约交易是指买卖双方对约定未来某个时间按指定价格接收一定数量的某种资产的协议进行交易。数字货币合约交易就是现在约好未来某个时间交易一定数量的数字货币。在区块链被越来越多的人认可之时,数字货币合约交易已成为广大投资者参与区块链获得利润的重要手段。 正…

【Rust】——使用Drop Trait 运行清理代码和Rc<T> 引用计数智能指针

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…

用Jenkins Gerrit-Trigger插件实现提交gerrit后自动启动编译验证-解决编译依赖问题

用Jenkins Gerrit-Trigger插件实现提交gerrit后自动启动编译验证-CSDN博客讨论了如何利用插件在提交gerrit的时候自动出发一个jenkins job编译固件,但是没有解决编译依赖问题。本文提出一种解决方案 首先在git commit -m ""的时候在commit message中设置Depend-On:…

项目总结(一)docker总结

目录 一、引言 二、docker ------>2.1、docker介绍 ------>2.2、与虚拟机的区别 ------>2.3、Docke基本概念 ------>2.4、Docker内部结构 ------>2.5、Windows上使用docker ------>2.6、Linux上使用Docker ------>2.7、Docker常用命令 ------&g…

Android无法开机卡在开机界面问题解决

问题描述 对Android操作系统进行一些修改后,例如: service相关 servicerc文件xml文件 lib相关 so动态库 等等,有可能导致一直卡在开机界面 问题原因 未知的原因 问题解决 有几种可以观察到现象的方案: 1. 音量上电源键 …

Acrobat Pro DC 2023:专业PDF编辑软件,引领高效办公新时代

Acrobat Pro DC 2023是一款专为Mac和Windows用户设计的专业PDF编辑软件,凭借其强大的功能和卓越的性能,成为现代职场人士不可或缺的得力助手。 这款软件拥有出色的PDF编辑能力。用户不仅可以轻松地对PDF文档中的文字、图片和布局进行编辑和调整&#xf…