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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chenyanwei6 中级黑马   /  2016-12-23 21:44  /  1135 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.heima.code;
/*
死锁:
同步中嵌套同步。

面试中请写一个死锁程序。
(能写出死锁,就代表已经理解了死锁,在程序开发中就会避免死锁)
* */
class TicketTest implements Runnable {
        private boolean flag;
        TicketTest(boolean flag){
                this.flag = flag;
        }
        @Override
        public void run() {
                if(flag){
                        while(true){
                        synchronized (MyLock.lockA) {
                                System.out.println("if lockA");
                                synchronized (MyLock.lockB) {
                                        System.out.println("if lockB");
                                }
                        }
                        }
                }else{
                        while(true){
                        synchronized (MyLock.lockB) {
                                System.out.println("else lockB");
                                synchronized (MyLock.lockA) {
                                        System.out.println("else lockA");
                                }
                        }
                }
                }
        }

}
class MyLock{
        static Object lockA = new Object();
        static Object lockB = new Object();
       
}
public class ThreadDemo07 {

        public static void main(String[] args) {

                Thread t1 = new Thread(new TicketTest(true));
                Thread t2 = new Thread(new TicketTest(false));
                t1.start();
                t2.start();
        }

}


1 个回复

倒序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马