静态内部类

单例模式的3种实现方式, 及其性能对比

余生长醉 提交于 2020-02-29 01:26:38
1. 懒汉模式(double check), 线程安全, 效率不高, 可以延迟加载 public class Singleton1 implements Serializable { // 用volatile修饰instance, 禁止指令重排序, 为保证多线程安全 private volatile static Singleton1 instance = null; private Singleton1() { // 防止反射调用私有构造方法(跳过安全检查), 重复实例化实例 if (instance != null) { throw new RuntimeException("error:instance=" + instance); } } public static Singleton1 getInstance() { if (instance == null) { synchronized (Singleton1.class) { if (instance == null) { instance = new Singleton1(); } } } return instance; } private Object readResolve() { return instance; // 防止反序列化重复实例化实例 } } 2. 饿汉模式, 线程安全, 效率高,

Java中的内部类和抽象类

谁说胖子不能爱 提交于 2019-11-28 09:40:48
一.Java中的内部类: 1.内部类的定义: 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。 成员内部类: 成员内部类是最普通的内部类,它的定义为位于另一个类的内部。 例: class Test1 { private String data = "外部属性" ; class Inner1 { private String data = "内部属性" ; public void print ( ) { System . out . println ( "成员内部类" ) ; System . out . println ( Test1 . this . data ) ; System . out . println ( data ) ; } } } 这段代码里Inner1就是Test1的内部类。 外部类要去访问内部类时需要注意的是在访问内部类时需要先实体化外部类对象,然后再在实体化的外部类对象中对内部类进行一个实体化。然后才能进行访问。 例: Test1 test1 = new Test1 ( ) ; //实例化外部类对象 test1 . new Inner1 ( ) . print ( ) ; //在外部类实例化的对象内实例化一个内部类,然后去调用其方法