当前位置: 首页 > news >正文

Java每日一练_模拟面试题1(死锁)

一、死锁的条件

死锁通常发生在两个或者更多的线程相互等待对方释放资源,从而导致它们都无法继续执行。死锁的条件通常被描述为四个必要条件,也就是互斥条件、不可剥夺条件、占有并等待条件和循环等待条件。

  1. 互斥条件:资源不能被共享,只能由一个线程使用。

  2. 不可剥夺条件:占有者不能强行剥夺资源,只能主动释放。

  3. 占有并等待条件:一个线程必须占有至少一个资源,并且等待获取其他资源。

  4. 循环等待条件:存在一个线程等待序列,其中的每个线程都占有至少一个资源并正在等待获取下一个线程所占有的资源。

下面是一个简单的Java代码示例,演示了如何创建一个死锁的情况:

public class DeadlockExample {private static Object resource1 = new Object();private static Object resource2 = new Object();public static void main(String[] args) {Thread t1 = new Thread(new Runnable() {public void run() {synchronized (resource1) {System.out.println(Thread.currentThread() + " locked resource1.");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}synchronized (resource2) {System.out.println(Thread.currentThread() + " locked resource2.");}}}});Thread t2 = new Thread(new Runnable() {public void run() {synchronized (resource2) {System.out.println(Thread.currentThread() + " locked resource2.");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}synchronized (resource1) {System.out.println(Thread.currentThread() + " locked resource1.");}}}});t1.start();t2.start();}
}

二、如何解决死锁

http://www.lryc.cn/news/413063.html

相关文章:

  • 第三方库认识- Mysql 数据库 API 认识
  • Python兼职接单全攻略:掌握技能,拓宽收入渠道
  • 一键编译并启动一个 ARM Linux qemu 虚拟机
  • KubeVirt虚拟机存储及网络卸载加速解决方案
  • JVM—对象已死?
  • 【前端面试3+1】20 css三栏布局6种实现方式、多行文本溢出怎么实现、token过期了怎么处理、【二叉树的中序遍历】
  • 【C++】vector介绍以及模拟实现(超级详细<=>源码并存)
  • 【Redis 进阶】主从复制(重点理解流程和原理)
  • Git常用命
  • 强化学习时序差分算法之Q-learning算法——以悬崖漫步环境为例
  • 111推流111
  • 刷题——数组中只出现一次的两个数字
  • 《剖析程序员面试“八股文”:助力、阻力还是噱头?》
  • Redis过期key的删除策略
  • 软件管理
  • 【2024】Datawhale AI夏令营 Task3笔记——Baseline2部分代码解读及初步上分思路
  • 软件测试——测试分类(超超超齐全版)
  • 深入解析 Go 语言 GMP 模型:并发编程的核心机制
  • PHP中如何处理字符串
  • windows内存泄漏检查汇总
  • yolo格式数据集之空中及地面拍摄道路病害检测7种数据集已划分好|可以直接使用|yolov5|v6|v7|v8|v9|v10通用
  • [Meachines] [Easy] Mirai Raspberry树莓派默认用户登录+USB挂载文件读取
  • 从零开始安装Jupyter Notebook和Jupyter Lab图文教程
  • 数据库魔法:SQL Server中自定义分区函数的奥秘
  • 网页禁止移除水印
  • Node Red 与axios简易测试环境的搭建
  • 测试面试宝典(四十三)—— 接口测试流程
  • arkhamintelligence 请求头加密 X-Payload 完整逆向分析+自动化解决方案
  • Vue Router哈希模式和历史模式
  • Springboot实战:AI大模型+亮数据代理助力短视频时代