java多线程中死锁实例
来源:互联网 发布:hecras软件 编辑:程序博客网 时间:2024/05/19 01:07
手写死锁实例
实例来自书本
上次面试问道自己手写一个死锁实例,平时对于死锁概念和流程都蛮熟悉的,关键时候突然蒙了,所以还是要自己动手写啊!
**
*1.两个竞争的资源
*2.同一个类里面实例化两个Thread来对两个资源竞争
*3.在t1获取碗后先sleep()(dosleep()方法),将时间片交个t2来获取筷子
*3.t1来请求筷子,但是t2还没有释放,线程等待;执行t2请求碗,但是t1没有释放,所以最后两个线程将相互等待
public class TestDeadlock { //竞争的资源 private String chopsticks = "筷子"; private String bowls = "碗"; public void dolock(){ t1.start(); t2.start(); } Thread t1 = new Thread(new Runnable(){ @Override public void run() { String name = Thread.currentThread().getName(); System.out.println(name+"准备去拿碗..."); synchronized(bowls){ System.out.println(name+"拿到了碗"); dosleep(name);//在休息的时候,将进行另外一个线程 System.out.println(name+"准备去哪筷子"); synchronized(chopsticks){ //没有执行到这里的话说明死锁了 System.out.println(name+"拿到了筷子"); } } } }); Thread t2 = new Thread(new Runnable(){ @Override public void run() { String name = Thread.currentThread().getName(); System.out.println(name+"准备去拿筷子..."); synchronized(chopsticks){ System.out.println(name+"拿到了筷子"); dosleep(name); System.out.println(name+"准备去哪碗"); synchronized(bowls){ System.out.println(name+"拿到了碗"); } } } }); public void dosleep(String name){ try { System.out.println(name+"拿到了,先休息一会儿"); Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } }}
阅读全文
0 0
- java多线程中死锁实例
- Java多线程死锁实例
- java中线程死锁实例
- 多线程死锁代码实例
- 多线程死锁实例
- 【Java多线程】多线程死锁
- java 中多线程之死锁浅析
- Java多线程中如何避免死锁
- java多线程-java死锁
- java多线程死锁
- java多线程:死锁
- Java多线程:线程死锁
- 《java 多线程中的死锁》
- JAVA 多线程-死锁
- java多线程同步死锁
- java多线程之死锁
- java多线程之死锁
- Java多线程 7 死锁
- 指针
- 使用字节流复制文件过程中容易导致复制的文件无法使用(如MP3文件比原来大了一千多倍且音乐无法播放)很严重的一个bug
- IFE-TASK11(任务十一:移动Web页面布局实践)
- 菜鸟先飞之JAVA_反射
- OpengGL
- java多线程中死锁实例
- Partition Equal Subset Sum问题及解法
- Matlab GUI图形化界面,坐标
- JavaScript中判断对象类型的几种方法总结
- 观光旅游
- AMD与CMD标准的区别
- 快速排序 快速搞定
- jdk环境配置
- Toggle_Back 返回主菜单的按钮控制