单例模式(Singleton): 保证一个类仅有一个实例,并提供一个访问它的全局访问点。
单例模式的用处比较多,比如应用中我们只需要一个线程池,数据库连接池,全局的配置等等。常用的有恶汉式和懒汉式两种。单例模式的实现核心在于我们需要私有化构造函数,通过静态方法获取这个实例。获取过程中需要注意多线程带来的安全问题。
恶汉式:类加载完成时,单例已被创建,线程安全
public class Tools {
private Tools() {
}
private static Tools ourInstance = new Tools();
public static Tools getInstance() {
return ourInstance;
}
}
懒汉式:主动获取单例时创建
public class Tools2 {
private Tools2(){}
private static volatile Tools2 tools2=null;
// double-check
public static Tools2 getInstance()
{
if (tools2==null){
synchronized (Tools2.class){
if (tools2==null){
tools2=new Tools2();
}
}
}
return tools2;
}
}
本文地址:http://blog.youkuaiyun.com/ProdigalWang/article/details/77050123