java
文章平均质量分 85
zyl19940321
这个作者很懒,什么都没留下…
展开
-
dubbo
去加载dubbo协议的实现类,在getExtension方法里,创建实例的时候为了防止并发,先使用了双重检查锁的单例模式,防止多个线程同时创建接口的扩展实例,这里使用了一个Holder<Object>对象去做加锁的对象,这么做的原因是这个时候还不存在扩展对象的实例,当多个线程加载不同的实例的时候,是可以允许并发,但是加载同一个实例是必须保证是单例的,但是此时实例对象为null,只能为每种实例对象先创建一个Holder对象,用来加锁。当结果返回后,会设置到此 Future,并唤醒阻塞的业务线程;原创 2023-03-14 09:52:03 · 179 阅读 · 0 评论 -
SpringBoot
SpringBoot的jar包启动原理 1.首先我们要知道的是,java没有提供标准的方法来加载jar包中的jar包,但是我们的springboot应用一般会引用很多别的jar包,这种jar包我们可以叫做fat jar。 2.当我们打一个jar包的时候,jar包中会有个META-INF的文件,这个文件会记录jar包的基础信息,比如Main‐Class,记录了写着main方法的类,springboot打成jar包的时候,这个Main‐Class就是一个叫JarLauncher的类,除此之外,springb原创 2022-05-28 20:03:23 · 87 阅读 · 2 评论