Java死锁的简单例子
来源:互联网 发布:码农网java入门 编辑:程序博客网 时间:2024/06/06 04:52
Java死锁的简单例子
两个线程互相占有对方需要的资源而不释放,便形成了死锁。
代码如下:
Program.java
/** * 程序类 * @author michael * */public class Program implements Runnable { //两个静态的资源 public static Object obj1 = new Object(); public static Object obj2 = new Object(); //标志位 public int flag = 1; //1 or 2 @Override public void run() { if(flag == 1) { synchronized (obj1) { System.out.println("flag: " + flag + ", 锁住了资源obj1"); try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("flag: " + flag + ", 等待获取资源obj2"); synchronized (obj2) { System.out.println("flag: " + flag + ", 获得资源obj2"); } } } else if(flag == 2) { synchronized (obj2) { System.out.println("flag: " + flag + ", 锁住了资源obj2"); try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("flag: " + flag + ", 等待获取资源obj1"); synchronized (obj1) { System.out.println("flag: " + flag + ", 获得资源obj1"); } } } }}
DeadLock.java
DeadLock.java/** * 死锁测试. * @author michael * */public class DeadLock { public static void main(String[] args) { Program p1 = new Program(); Program p2 = new Program(); p1.flag = 1; p2.flag = 2; new Thread(p1).start(); new Thread(p2).start(); }}
控制台结果:
阅读全文
0 0
- Java死锁的简单例子
- java写一个死锁的简单例子
- Java一个简单的死锁例子
- Java线程死锁的简单例子
- Java产生死锁的一个简单例子
- Java产生死锁的一个简单例子
- Java产生死锁的一个简单例子
- 最简单的java死锁例子
- Java产生死锁的一个简单例子
- 简单的死锁例子
- 简单的死锁例子
- java死锁的例子
- Java 死锁的例子
- Java死锁的例子
- 简单的死锁的例子
- 一个简单的死锁例子
- 一个死锁的简单例子
- 一个简单的死锁例子
- hibernate所需jar包
- NOIP 2014 Senior 3
- a 标签中调用js的几种方法
- 常见 HTTP 响应状态码
- 【简记】Java Web 内幕——Servlet介绍,编程
- Java死锁的简单例子
- 【Shell】命令代换
- 2017.7.15 C组总结
- Windows下 搭建WEEX遇到的坑!!
- 156_LETTERS
- 【二分查找】[POJ2366]Sacrament of the sum
- CF Round #424( Div.2) D. Office Keys
- cookie和session的区别
- DOM中NodeList&NamedNodeMap&HTMLCollection简介