package cn.thread;
/**
* 死锁演示
* @author Administrator
*
*/
class LockTest implements Runnable{
//声明一个标记
private boolean flag;
//构造函数
public LockTest(boolean flag){
this.flag = flag;
}
public void run(){
if(flag){
synchronized(MyLock.lock1){
System.out.println(Thread.currentThread().getName()+"if同步代码块中的 lock1锁");
synchronized(MyLock.lock2){
System.out.println(Thread.currentThread().getName()+"if同步代码块中的 lock2锁");
}
}
}else{
synchronized(MyLock.lock2){
System.out.println(Thread.currentThread().getName()+"else同步代码块中的 lock2锁");
synchronized(MyLock.lock1){
System.out.println(Thread.currentThread().getName()+"else同步代码块中的 lock1锁");
}
}
}
}
}
/*
* 自定义锁
*/
class MyLock{
//两个固定的锁
public static final Object lock1 = new Object();
public static final Object lock2 = new Object();
}
public class DeadLockTest_1 {
public static void main(String[] args) {
//用构造函数初始化对象,来切换
LockTest lt1 = new LockTest(true);
LockTest lt2 = new LockTest(false);
Thread t1 = new Thread(lt1);
Thread t2 = new Thread(lt2);
t1.start();
t2.start();
}
}
|
|