指一个类只有一个实例,且该类能自行创建这个实例的一种模式
懒汉式单例volatile synchronized 这里用volatile确实更胜一筹
public class LazySingleton
{
private static volatile LazySingleton instance=null; //保证 instance 在所有线程中同步
private LazySingleton(){} //private 避免类在外部被实例化
public static synchronized LazySingleton getInstance()
{
//getInstance 方法前加同步
if(instance==null)
{
instance=new LazySingleton();
}
return instance;
}
}
饿汉式单例
public class HungrySingleton
{
private static final HungrySingleton instance=new HungrySingleton();
private HungrySingleton(){}
public static HungrySingleton getInstance()
{
return instance;
用途:当某类需要频繁实例化,而创建的对象又频繁被销毁的时候,如网络请求,多线程的线程池、网络连接池等
单例模式可扩展为有限的多例(Multitcm)模式,这种模式可生成有限个实例并保存在 ArmyList 中,客户需要时可随机获取