//饿汉单例(线程安全)
public class Mon {
private static final Mon INSTANCE = new Mon();
//构造方法私有化
private Mon() {}
public static Mon getInstance() {
return INSTANCE;
}
//创建一个普通方法
public void print() {
System.out.println("这是一个饿汉单例");
}
public static void main(String[] args) {
Mon singleon = null;//声明对象
singleon = Mon.getInstance();
singleon.print();
}
}
//懒汉单例(线程不安全)
public class Mon {
private static Mon instance;
//构造方法私有化
private Mon() {}
public static Mon getInstance() {
if(instance == null) {
//此时还没有实例化
instance = new Mon();
}
return instance;
}
public void print() {
System.out.println("这是一个懒汉单例");
}
public static void main(String[] args) {
Mon lemon = null;//声明对象
lemon = Mon.getInstance();
lemon.print();
}
}
//懒汉单例(线程安全)
//1.在对getInstance() 进行上锁synchronized,但是效率太低
//2.双重检查(静态内部类方法),线程安全、延迟加载、效率较高
public class Mon {
private Mon() {
}
private static class Sing {//内部类
private static final Mon INSTANCE = new Mon();
}
public static Mon getInstance() {
return Sing.INSTANCE;
}
public static void main(String[] args) {
Mon mon = null;//声明对象
mon = Mon.getInstance();
}
}