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();
}
}