概念:
Java中单例模式是一种常见的设计模式,单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
单例模式有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
上面方式它是线程不安全的,并发环境下很可能出现多个Singleton实例,所以需要进行改造
第一种方式,需要对getInstance这个方法改造,保证了单例的线程安全
第二种方法
类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的。
Java中单例模式是一种常见的设计模式,单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
单例模式有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
//在第一次调用的时候实例化自己 ,非线程安全
public class Singleton {
private Singleton() {}
private static Singleton single=null;
//静态工厂方法
public static Singleton getInstance() {
if (single == null) {
single = new Singleton();
}
return single;
}
}
上面方式它是线程不安全的,并发环境下很可能出现多个Singleton实例,所以需要进行改造
第一种方式,需要对getInstance这个方法改造,保证了单例的线程安全
public static synchronized Singleton getInstance() {
if (single == null) {
single = new Singleton();
}
return single;
}
第二种方法
类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的。
public class Singleton {
private Singleton() {}
private static final Singleton single = new Singleton();
//静态工厂方法
public static Singleton getInstance() {
return single;
}
}