文章目录

  • 一、什么是死锁?
  • 二、产生死锁的条件?
  • 三、产生死锁的示例代码(java)
  • 四、如何避免死锁?

一、什么是死锁?

  • 下面图片参考 JavaGuide中的内容
  • 死锁的概念

死锁:指的是相互两个线程之间都需要获取对方的资源才能进行下一步,如果每个线程都不肯将自己所持有的资源释放掉,这时就会导致死锁了。

二、产生死锁的条件?

  • 产生死锁的条件

三、产生死锁的示例代码(java)

  • 代码实现
package DeadLock;public class DeadLock {//先定义两个静态类型的字符串,让两个字符串来作为锁,方便后序加锁public static String obj1 = "obj1";public static String obj2 = "obj2";public static void main(String[] args){Thread a = new Thread(new Lock1());Thread b = new Thread(new Lock2());a.start();b.start();}
}//继承Runnable接口,实现多线程
class Lock1 implements Runnable{@Overridepublic void run(){try{System.out.println("Lock1 running");while(true){synchronized(DeadLock.obj1){System.out.println("Lock1 lock obj1");Thread.sleep(3000);synchronized(DeadLock.obj2){System.out.println("Lock1 lock obj2");}}}}catch(Exception e){e.printStackTrace();}}
}//继承Runnable接口,实现多线程
class Lock2 implements Runnable{@Overridepublic void run(){try{System.out.println("Lock2 running");while(true){synchronized(DeadLock.obj2){System.out.println("Lock2 lock obj2");Thread.sleep(3000);synchronized(DeadLock.obj1){System.out.println("Lock2 lock obj1");}}}}catch(Exception e){e.printStackTrace();}}
}
  • 代码执行结果

四、如何避免死锁?

死锁是什么?死锁产生的条件?如何避免死锁?以及死锁的示例代码(Java代码)相关推荐

  1. 计算机系统学习之(1):基础知识概要——进程、中断、线程、竞态条件、关键区域、死锁、进程调度

    文章目录 进程的创建 哪些事件导致进程的创建 fork 和 exec 命令创建和控制进程 fork() 命令 execve() 命令 进程的状态 中断 中断的种类 线程 线程共享内容 线程独有内容 进 ...

  2. 读写分离,读写分离死锁解决方案,事务发布死锁解决方案,发布订阅死锁解决方案|事务(进程 ID *)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务...

    前言:         由于网站访问压力的问题,综合分析各种因素后结合实际情况,采用数据库读写分离模式来解决当前问题.实际方案中采用"事务发布"模式实现主数据库和只读数据库的同步, ...

  3. 查询数据的时候 提示事务(进程 ID **)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。

    转自:https://blog.csdn.net/vip__888/article/details/6087850 =======================以下为原文内容============ ...

  4. C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁

    C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁 参考文章: (1)C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁 (2) 通信缓冲区 资源上,并且已被选作死锁牺牲品.请 ...

  5. JDK中ThreadDump诊断Java代码中的线程死锁问题

    多线程的死锁..死锁不是死了而是线程互相等待... 在项目中可能就是在几十万行的代码中存在一个死锁的问题,如何发现这个问题并且解决这个问题. JavaJDK为我们提供了一个诊断工具叫做ThreadDu ...

  6. EF 多线程TransactionScope事务异常事务(进程 ID 58)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。

    在使用EF的TransactionScope事务时,如果多线程程序,经常会抛出如下异常 {"事务(进程 ID 58)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品.请重新运行该事务 ...

  7. 解决:与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品

    今天程序运行时出现的一个错误,连接数据库Sql Server2012 进行更新操作时出现: java.sql.SQLException: 事务(进程 ID 126)与另一个进程被死锁在 锁 资源上,并 ...

  8. 与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。问题解决

    前几天有客户反馈,查询的时候会偶发死锁问题,数据库是sqlserver,报错如下: java.sql.SQLException: 事务(进程 ID 126)与另一个进程被死锁在 锁 资源上,并且已被选 ...

  9. 事务(进程 ID XXX)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品

    多线程高并发量执行方法的过程中控制台出现:事务(进程 ID XXX)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品. 可以尝试对方法加锁来解决问题. //定义lock锁 private fi ...

最新文章

  1. python使用osgeo库_python中使用gdal,osgeo
  2. 安装JAVA8要登录_JDK8的安装及环境配置
  3. vb红绿灯自动切换_VB红绿灯程序.doc
  4. linux信号量使用
  5. weblogic部署war包
  6. C#调用Qpdf的界面+拖拽pdf文件到窗口+解除pdf权限密码+另存为
  7. 孩子学python_教孩子学编程 Python
  8. 如何在word中安装grammarly
  9. 计算机控制面板设置命令,控制面板在哪?控制面板命令,5种控制面板快速打开法...
  10. 新买笔记本屏幕缝隙有灰尘_如何清除笔记本电脑上的灰尘
  11. 教你如何使用语雀提高效率
  12. 这样定义通用人工智能
  13. Buddy 内存管理机制(下)
  14. XStream分析(2)
  15. 如何将pdf转换成ppt呢?
  16. 《Pro SQL Server Internals, 2nd edition》CHAPTER 2 Tables and Indexes-Clustered Indexes
  17. Gopher China 大会福利加码
  18. SAS MACRO Debugging option
  19. vscode更换编译器_打造性感好用的VS Code编辑器
  20. 【GPS仿真】基于matlab GPS信号捕获跟踪【含Matlab源码 2126期】

热门文章

  1. 关于ftp的说法错误的是_斯坦福教授:成长型思维的养成,只需要换个说法,思维是可以训练的!...
  2. 关于计算机设计的论文,计算机的设计论文.doc
  3. 一些SQL性能优化的实用经验
  4. mfc只有doc才能序列化吗_MFC序列化-IMPLEMENT_SERIAL(...)
  5. 用mendeley在word中插入文献_Mendeley在Word添加工具栏和插入和删除文献的方法 | 科研动力...
  6. 查找txt中的中文字符_找出nginx请求日志中某个url请求总次数排名前十的ip地址...
  7. android运动轨迹rungps_android运动轨迹rungps_Android使用百度地图API实现GPS步行轨迹...
  8. 移动**21*设置无法接通_七大新增时刻传奇!外服率先体验而国服暂时无法推出的粉传盘点+21赛季移动端首批精选上架!...
  9. 用指针实现删除数组中小于10的数据
  10. 软件测试用户故事评审实验报告,软件测试评审题目.doc