java死锁例子详解
来源:互联网 发布:中国历史多少年知乎 编辑:程序博客网 时间:2024/05/22 01:31
java死锁例子详解
本文给出一个简单的java死锁例子:
java代码块
package Test;public class TestDeadLock implements Runnable{ public TestDeadLock(int flag){ this.flag = flag; } public int flag = 1; static Object o1=new Object(),o2=new Object(); public static void main(String[] argv){ TestDeadLock ts1 = new TestDeadLock(1); TestDeadLock ts2 = new TestDeadLock(0); Thread t1 = new Thread(ts1); Thread t2 = new Thread(ts2); t1.start(); t2.start(); } public void run(){ System.out.println("线程"+ flag+"启动。。。"); if(flag == 1){ synchronized (o1){ try{ Thread.sleep(500); }catch(Exception e){ e.printStackTrace(); } synchronized(o2){ System.out.println("1"); } } } if(flag == 0){ synchronized(o2){ try{ Thread.sleep(500); }catch(Exception e){ e.printStackTrace(); } synchronized(o1){ System.out.println("0"); } } } System.out.println("线程"+ flag+"结束。。。"); } }
运行结果
解决死锁的思路:
- 资源有序分配,比如先分配o1,再o2。
- 如果已经死锁,可以撤销线程。
预防死锁算法
银行家算法:
- 银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。
- 但是每部操作需要保持系统安全状态
ps(安全状态)
安全序列是指一个进程序列{P1,…,Pn}是安全的,即对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j < i )当前占有资源量之和。
0 0
- java死锁例子详解
- java线程死锁例子
- Java死锁例子
- java死锁的例子
- java多线程死锁例子
- JAVA 死锁例子
- java产生死锁例子
- Java 死锁的例子
- Java死锁的例子
- Java死锁例子
- java死锁例子
- java 死锁例子
- Java 死锁例子
- java小例子实现死锁
- Java多线程死锁的例子
- java死锁的一个例子
- Java多线程探究-死锁例子
- Java死锁的简单例子
- HTML5做的音频播放器,可以动态的更换音频文件的内容
- iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建
- C#中图片与BASE64码互相转换
- MR-找朋友
- POJ 2034 Anti-prime Sequences(数论+dfs)
- java死锁例子详解
- Linux 新手非常有用的 20 个命令
- iOS开发-我的iOS工程结构
- 关于桶排序算法的STL实现
- 图的遍历
- gcc 4.7 + 不能使用boost_thread的解决办法
- SpringMVC定时任务 执行两次
- [树状数组+DP]hdu3450 Counting Sequences
- 数据备份