• 9、8锁现象彻底的理解锁(锁的只有两个东西,一个是对象,一个是Class模板(static修饰))


    8锁现象彻底的理解锁(锁的只有两个东西,一个是对象,一个是Class模板(static修饰))

    第一个问题:(资源类的两个方法都是加syn的,只有一个对象时)(先发短信再打电话)

     

     

    其中打印的肯定是先有发短信,然后是打电话。

    这里聊下逻辑:这里是因为锁,首先我们要知道我们这锁的是什么,锁的是我们的调用对象,也就是我们在main中的new的对象。只有一个对象所以其中是谁先拿到这个锁谁就先执行,所以就是先发短信再打电话

    问题二:(我们还是只有一个对象,然后让第一个线程的调用的方法先等待4秒再输出)-(先发短信再打电话)

     

     

     

    逻辑:输出现象是先等4秒还是先输出发短信,然后才是打电话(其中我们要知道,这里还是锁的问题,我们锁的这里只有一个对象,那么就是谁先拿到锁谁就先执行了)

    问题三:(我们在资源类中在给他一个没有锁的方法。我们让线程一个去调用加syn的方法(这个方法有一个先休眠4秒),一个去调用没有锁的方法(hello方法))(这里就会先输出hello,然后再输出发短信了)

     

     

    逻辑:这里的现象是,先打印出hello再等4秒打印出发短信,我们这里hello方法没有这个syn这个锁的,所以不受这个锁的影响。(而我们这里的锁的方法是先睡眠4秒才执行的)

    问题4:(我们准备两个对象,一个线程让对象1去调用发短信(还是睡眠4s的),一个线程让对象2去调用打电话)(这里是先打电话再等4s输出发短信了)

    逻辑:这里的现象是打电话再等4s输出发短信了,原因是这两个对象就是两把锁,所以就是按时间来执行了,我们对象1的方法先睡眠了4s嘛。

     

     

    问题5:(两个静态的syn同步方法了(static),只有一个对象去调用方法)(先等4s发短信,再打电话)

    .

     

     

     

    逻辑:这里的现象是先等4s输出发短信(方法先睡眠4s嘛),然后是打电话。这里我们的锁的方法是被static修饰的,这个是static修饰的东西是跟着类加载的时候就加载出来了(类一加载就有Class模板了),然后这个syn锁的就是对象的Class模板

    问题6:(两个static修饰syn锁方法,两个对象分别去调用一个方法)(还是先等4s发短信,再打电话)

     

     

    逻辑:现象是先等4s发短信,然后输出打电话,他们这里虽然是两个对象但是资源类的锁被static修饰,锁的就是类刚被加载出来的额Class对象(模板)。一个类是只有一个模板的(new的对象不同,但是对象的模板是同一个)。所以我们锁的东西就是Class模板就这一个。那么也是谁先拿到这个锁,谁就先执行

    问题7:(一个静态同步方法(static syn(休眠4s)),一个普通同步方法(syn),然后只有一个对象,两个线程使用)(先打电话,再等4s输出发短信)

     

     

     

    逻辑:这里的现象是先打电话再等4s输出发短信,这里的逻辑是,上面的static修饰syn其锁的是Class模板还要休眠4s再输出,而我们下面syn修饰的普通同步方法锁的是我们new出来的对象(实例对象)。两个锁的不是同一个东西。而前面的static syn还要先休眠4s那么肯定就是下面的syn普通方法先执行咯(按照时间)

    问题8:(一个静态同步方法(static syn(休眠4s)),一个普通同步方法(syn),然后两个实例对象)(还是先打电话,再等4s才是发短信)

     

     

     

    逻辑:现象还是先打电话,再等4发短信,与问题7是一样的,前面static syn锁的是Class模板(还要先休眠4s),只是syn普通同步方法锁的是对象2了。所以两个锁的不是同一个东西,值看执行时间,而static syn方法要先休眠4s在输出

  • 相关阅读:
    解析后人类时代类人机器人的优越性
    如何获取GC(垃圾回收器)的STW(暂停)时间?
    【信管1.12】新技术(一)物联网与云计算
    【Java】学习SpringBoot框架,一些问题和答案
    【BOOST C++ 13 并行编程】(3) Futures和 Promises线程
    微信小程序_02
    BeanUtils.copyProperties使用分析
    裸金属服务器是什么
    【微服务架构组件之注册中心】注册中心选型-我只选nacos
    物联网中的毫米波雷达:连接未来的智能设备
  • 原文地址:https://blog.csdn.net/logtcm4/article/details/127859602