- 浏览: 2780 次
最新评论
文章列表
本文只涉及java 的classloader体系以及classloader对class的加载行为,不涉及一个class的加载过程和生命周期ClassLoader 层级jvm classloader 分为3层,顶层是拿C语言写的Bootstrap classloader,我们称之为JVM类加载器,主要加载的是classpath 下rt.jar ...
对于maven项目经常会出现,项目引入一堆依赖,最后项目运行的时候出现
NoSuchMethod
ClassNotFound
NoClassDefFound
这些exception,这个时候就要怀疑是不是引包的姿势不对,导致了项目启动出现问题!
Root Cause:
一般出现以上exception的根本原因是,a,b不同的依赖之间依赖了同一个依赖c的不同版本,在A版本中某个类还在,但是在B版本中对应的类已经被删除了,maven依赖的时候根据自身的规则依赖了B版本,导致了应用在调用a的方法时,出现了NoSuchMethodException
ps:这里稍微提一下maven的依赖加 ...
对于ReentrantLock,一般我们在调用无参构造函数的时候,构造的是非公平锁,当前类也存在一种可以指定锁类型的构造方法,即 ReentrantLock(boolean fair),ReentrantLock锁的实现是通过内部类FairSync和NonfairSync继承AQS实现的。
我们今天主要讨论下这两个内部类,从而探讨下代码级别是如何实现公平锁和非公平锁的。
先看ReentrantLock加锁方法,可以自己去看源码,底层是在FairSync和NonfairSync这两个内部里面做的逻辑
static final class NonfairSync extends Sync {
...