美团秋招内推啦内推啦!缺前端缺后端!


meituan到店事业群平台技术部,秋招火热进行中!
内推方式1:

点击链接看内推二维码,扫码投 简历   https://www.cnblogs.com/CATHY-MU/p/15102097.html

内推方式2:

登陆官网投递(  https://campus.meituan.com/ )填写内推码( OYkaHKQ)

平台技术部校招咨询qq群 821133476

synchronized
被他修饰的方法或代码块在任一时刻只有一个线程执行。

使用synchronized

  1. 修饰实例方法=对实例加锁,执行前需要获得实例的锁

    synchronized void method() {
      //业务代码
    }
  2. 修饰静态方法 = 对类加锁

    synchronized static void method() {
    //业务代码
    }
  3. 修饰代码块 = 给指定对象/类加锁

    synchronized(this) { //业务代码 } synchronized(类.class){ //blabla }

    双重校验锁实现单例模式 线程安全

    public class Singleton{ private volatile static Singleton uniqueInstance; private Singleton(){
     } public static Singleton getInstance(){ //先判断对象是否已经实例过 if (uniqueInstance == null){ synchronized (Singleton.class){ if (uniqueInstance == null){
                     uniqueInstance = new Singleton();
                 }
             }
         }
     }
    }

    上面代码为什么要用volatile
    uniqueInstance = new Singleton();的步骤
    1.给uni分配内存地址
    2.初始化uni
    3.把uni指向刚才分配的内存地址
    由于jvm指令重排,上述步骤可能按照1 3 2的顺序执行,多线程环境下,执行完3就有调用方get到了uni,但是此时uni还没有被初始化。
    volatile可以避免指令重排。

构造方法本身就是线程安全的
不需要用synchronized修饰。

synchronized底层原理

修饰同步语句块

每个对象中都内置了一个objectMonitor对象,获取锁就是获取对象监视器monitor的持有权。
monitorenter指向被synchronized修饰的同步语句块开始的位置,monitorexit指向同步语句块结束的位置。
当执行monitorenter时,会尝试获取对象的锁,如果锁的计数器为0表示可以获取,获取到后计数器会置为1。
monitorexit执行后,计数器会重新置为0。

修饰方法

被修饰的方***用ACC_SYNCHRONIZED标识,表明该方法是同步方法。本质也是对monitor的获取。


#美团##校招##秋招##内推#
全部评论
先笔试?
点赞 回复 分享
发布于 2021-08-22 11:34

相关推荐

白火同学:先说结论,准大三不是特别好找实习,boss沟通300+没有实习是很正常的情况。一是暑期实习时间太短了,二是在这么多准大四都找不到实习,从实习时间和掌握技术层面,企业会优先看他们。 再说简历,其实985本+准大三到这水平的简历也很优秀了,要说的话,项目经历可以再优化一下,可以基本围绕采取STAR原则,分为项目概述、技术架构、技术亮点、实现结果,再发给AI润色一下。 最后说操作,准大三的话,如果想找实习那就多投,不过现在也7月中旬了,时间上已经略晚了。如果7月底实在找不到,也可以多刷点算法,多学点技术,这实习也不至于一定得有,当然有更好。
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务