zoukankan      html  css  js  c++  java
  • 史上超级无敌多线程死锁


     *  synchronized:并不是往对象里面枷锁,锁是每个对象都有的属性,synchronized只是锁上了这把锁,是个持续的动作而已
     *  死锁就是大家都访问不了的状态
     *
     *  两个线程,
     *  两个线程先后访问两个互斥的对象
     *
     *  原理:
     *      1某个线程执行完成,需要 先后 嵌套 锁定 执行两个对象,但是,过程当中,肯定就锁定了第一个对象
     *      2 另外一个线程执行完成,也需要先后嵌套锁定执行两个对象,先执行锁定第二个对像
     *      3 在第一个执行过程中,执行到第二个对象时,发现被锁定了,等待
     *      4 第二个线程执行过程中,执行到第一个对象的时候,发现第一个被锁死了,也只能等待.

    public class Thread DeadLock{
        public static void main(String[] args){
            Object o1 = new Object();
            Object o2 = new Object();

            Thread t1 = new Thread(new A(o1,o2));
            Thread t2 = new Thread(new B(o1,o2));
            t1.start();
            t2.start();
        }
    }

    class A implements Runnable{
        Object o1;
        Object o2;

        T1(Object o1, Object o2){
            this.o1 = o1;
            this.o2 = o2;
        }

        public void run(){
            synchronized(o1){
                try{
                    Thread.sleep(1000);
                }catch(Exception e){
                    e.printStackTrace();
                }
                synchronized(o2){
                    System.out.println( "t1" );
                }
            }
        }
    }

    class B implements Runnable{
        Object o1;
        Object o2;

        T2(Object o1, Object o2){
            this.o1 = o1;
            this.o2 = o2;
        }

        public void run(){
            synchronized(o2){
                try{
                    Thread.sleep(1000);
                }catch(Exception e){
                    e.printStackTrace();
                }
                synchronized(o1){
                    System.out.println( "t2" );
                }
            }
        }
    }

  • 相关阅读:
    Unique constraint on single String column with GreenDao2
    Unique constraint on single String column with GreenDao
    将String转换成InputStream
    TypeError: unsupported operand type(s) for +: 'float' and 'str'
    Could not find private key file: AuthKey_NCD8233CS5.p8
    【Winows10】添加桌面小工具(在桌面显示时钟,日历)
    【Windows10】禁用开机启动项
    SQL如何查询出某一列中不同值出现的次数?
    使用 管理项目依赖
    Warning: Python 3.6 was not found on your system…
  • 原文地址:https://www.cnblogs.com/xrmqbl804915256/p/4802336.html
Copyright © 2011-2022 走看看