从字面意思看 就是一个实例/对象
特点:
- 单例类只有一个实例对象
- 该对象有单例类自行创建
- 单例类对外提供一个访问该单例的全局访问点
两种形式
1.懒汉式
通过调用方法生成实例对象
public class LazySingleton
{
private static volatie LazySingleton instance=null;
//保证 instance 线程同步
private LazySingleton(){}
public static synchronized LazySingleton getInstance()
{
if(instance==null)
{
instance=new LazySingleton;
}
return instance;
}
}
2.饿汉式
类一旦加载即可生成实例,同时保证对象不会改变,可直接用于多线程
public class HungrySingleton
{
private static final HungrySingleton instance=new HungrySingleton();
private HungrySingleton(){}
public static HungrySingleton getInstance()
{
return instance;
}
}
适用场景:
我认为能用一个实例去简单的完成即可应用
- 类要求一个实例对象时 eg:某人–
- 对象频繁创建和销毁 eg:多线程 线程池
- 对象被共享时 eg:数据库连接池–