饿汉式
1.私有化类的构造器
2.内部创建类的对象
3.提供公共的静态方法返回类的对象
package Singleton;
public class SingletonEX {
public static void main(String[] args) {
}
}
class Order1{
private Order1(){
}
private static Order1 instance = new Order1();
public static Order1 getInstance() {
return instance;
}
}
懒汉式
线程安全的
1.私有化类的构造器
2.声明当前类对象,没有初始化
3.声明public,static的返回当前类对象的方法
package Singleton;
public class SingletonEX {
public static void main(String[] args) {
}
}
class Order1{
private Order1(){
}
private static Order1 instance = null;
public static synchronized Order1 getInstance() {
if (instance == null){
instance = new Order1();
}
return instance;
}
}代码片
要求对象都是静态的
两者区别
饿汉式:对象加载时间过长 但是本身是线程安全的
懒汉式:本身线程不安全(加synchronized就安全了),好处是可以延迟一个对象的创建。