例子2: volatile bean,在 volatile bean 模式中,JavaBean 的所有数据成员都是 volatile 类型的,并且 getter 和 setter 方法必须非常普通 —— 除了获取或设置相应的属性外,不能包含任何逻辑。
允许在同一申明类型(类,属性,或方法)的多次使用同一个注解.JDK8之前,Java 8之前也有重复使用注解的解决方案,但可读性不是很好,比如下面的代码:由另一个注解来存储重复注解,在使用时候,用存储注解Authorities来扩展重复注解。
主管 Java 程序的运行,它保存方法的局部变量、部分结果,并参与方法的调用和返回。每个线程在创建的时候都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应着一次次 Java 方法调用,是线程私有的,生命周期和线程一致。
1、全盘负责,当一个类加载器负责加载某个Class时,该Class所依赖的和引用的其他Class也将由该类加载器负责载入,除非显示使用另外一个类加载器来载入;2、父类委托,先让父类加载器试图加载该类,只有在父类加载器无法加载该类时才尝试从自己的类路径中加载该类;
synchronized: 1、以获取锁的线程执行完同步代码,释放锁 2、线程执行发生异常,jvm会让线程释放锁,Lock: 在finally中必须释放锁,不然容易造成线程死锁。锁的获取,synchronized: 假设A线程获得锁,B线程等待。如果A线程阻塞,B线程会一直等待。Lock: 分情况而定,Lock有多个锁获取的方式,大致就是可以尝试获得锁,线程可以不用一直等待(可以通过tryLock判断有没有锁)