枚举方式(推荐)
创建枚举默认就是线程安全的,所以不需要担心double checked locking,而且还能防止反序列化导致重新创建新的对象。保证只有一个实例(即使使用反射机制也无法多次实例化一个枚举量)。
public class Singleton {
public static void main(String[] args) {
Single single = Single.SINGLE;
single.print();
}
enum Single {
SINGLE;
private Single() {
}
public void print() {
System.out.println("hello world");
}
}
}
实践验证:
package com.company;
/**
* Title:
*
* @Author
* @CreateTime 2019/5/31 15:28
*/
public class Singleton {
public static void main(String[] args) {
Single single1 = Single.SINGLE;
single1.setAge(20)