A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 小穿钉 高级黑马   /  2015-11-22 10:55  /  270 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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


}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马