写死锁的郁闷

这段时间在看马士兵老师的关于线程同步的教程,完了自己想写一个死锁出来,按照马老师的精髓,我写了下面的代码,但我无论如何也没法将它锁死,下面是代码希望大家帮忙看下是什么原因,我感谢万分!!!!(jdK版本:6.0)
package cn.zhangxuemin.j2se;

public class TestDeadLock implements Runnable{
static int flag ;
static Object o1 = new Object();
static Object o2 = new Object();
public void run () {
System.out.println("flag= "+flag);
if(flag==2) {
synchronized (o1) {
System.out.println("i am object 1");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}

synchronized (o2) {
System.out.println("i am object 2");
}
}
}
if(flag==1) {
synchronized (o2) {
System.out.println("i am object 222");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (o1) {
System.out.println("i am object 111");
}
}
}
}

public static void main(String[] args) {
TestDeadLock test1 = new TestDeadLock();
TestDeadLock test2 = new TestDeadLock();


Thread t1 = new Thread(test1);
Thread t2 = new Thread(test2);
flag = 1;
t1.start();
flag = 2;
t2.start();
}

}


运行结果:
flag= 2
i am object 1
flag= 2
i am object 2
i am object 1
i am object 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值