博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
死锁AB-BA问题
阅读量:5147 次
发布时间:2019-06-13

本文共 1079 字,大约阅读时间需要 3 分钟。

AB-BA经常是造成多线程死锁的最大元凶,具体表现为线程I先后去拿锁A与锁B,然而当去拿锁B时发现已经被另一个线程II拿走,然而线程II拿到锁B后又需要锁A,于是两个线程互相等待在成死锁

1 public class Main{ 2      public static void main(String[] args){ 3         System.out.println("演示开始"); 4            new Thread(()->{ 5              A.a(); 6            }).start(); 7            new Thread(()->{ 8              B.b(); 9            }).start();10      }11 12      static class A{13         public static synchronized void a(){14             try{15                 Thread.sleep(3000);    16             }catch(Exception e){17                 e.printStackTrace();18             }19             20 21             System.out.println("我拿到锁a了,锁b快到碗里来!");22 23             B.b();24         }25      }26 27      static class B{28         public static synchronized void b(){29             System.out.println("我拿到锁b了,锁a快到碗里来!");30             try{31                 Thread.sleep(3000);    32             }catch(Exception e){33                 e.printStackTrace();34             }35             A.a();36         }37      }38  }

 

转载于:https://www.cnblogs.com/shaozhen/p/11127126.html

你可能感兴趣的文章
Vue安装准备工作
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
Xcode5和ObjC新特性
查看>>
LibSVM for Python 使用
查看>>
Centos 7.0 安装Mono 3.4 和 Jexus 5.6
查看>>
CSS属性值currentColor
查看>>
java可重入锁reentrantlock
查看>>
浅谈卷积神经网络及matlab实现
查看>>
解决ajax请求cors跨域问题
查看>>
《收获,不止Oracle》pdf
查看>>
Real-Time Rendering 笔记
查看>>
如何理解HTML结构的语义化
查看>>
Activity之间的跳转:
查看>>
实验四2
查看>>
多路复用
查看>>
Python数据可视化之Pygal(雷达图)
查看>>
Java学习笔记--字符串和文件IO
查看>>
转 Silverlight开发历程—(画刷与着色之线性渐变画刷)
查看>>
SQL语法(3)
查看>>