码迷,mamicode.com
首页 > 编程语言 > 详细

线程中 模拟死锁问题

时间:2015-05-19 19:08:55      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

package hpu.acm.lzl.demos;
/**
 * 模拟一个死锁的环境。
 * 死锁就是用synchronized实现的。
 * 一个线程使用synchronized 锁定一个方法之后 等待第二个线程释放资源完成第二个锁的操作。
 * 另一个线程使用synchronized 锁定一个方法后 等待第一个线程释放资源完成第二个锁。
 * 因此产生了 死锁
 * @author admin
 *
 */
public class DeadLockdemos implements Runnable{
    static Object o1 = new Object(), o2 = new Object();
    public int flag = 1;
    
    @Override
    public void run() {
        if(flag ==1){
            synchronized(o1){
                try {
                    Thread.sleep(500);
                } catch (Exception e) {
                }
                synchronized(o2){
                    System.out.println("你好!t2");
                }
            }
        }
        if(flag == 0){
            synchronized(o2){
                try {
                    Thread.sleep(500);
                } catch (Exception e) {
                }
                synchronized(o1){
                    System.out.println("你好!t1");
                }
            }
        }
    }
    
public static void main(String[] args) {
    DeadLockdemos dlock = new DeadLockdemos();
        Thread t1 = new Thread(dlock);
        Thread t2 = new Thread(dlock);
        t1.setName("t1");
        t2.setName("t2");
        t1.start();
        t2.start();
    }
}

线程中 模拟死锁问题

标签:

原文地址:http://blog.csdn.net/u011521890/article/details/45846969

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!