当前位置: 编程技术>java/j2ee
java单例模式4种使用方式分享
来源: 互联网 发布时间:2014-11-02
本文导语: 1、Java Concurrency In Practice的List 代码如下:public class Singleton { private static class SingletonHolder { public static Singleton resource = new Singleton(); } public static Singleton getResource() { return SingletonHolder.r...
1、Java Concurrency In Practice的List
代码如下:
public class Singleton {
private static class SingletonHolder {
public static Singleton resource = new Singleton();
}
public static Singleton getResource() {
return SingletonHolder.resource ;
}
private Singleton(){
}
}
2、effective Java
代码如下:
public class Singleton {
public static final Singleton INSTANCE = new Singleton();
private Singleton(){}
public void method(){
//...
}
public static void main(String[] a){
//调用方法。
Singleton.INSTANCE.method();
}
}
3、利用枚举巧妙创建单实例
代码如下:
/**
* 利用枚举巧妙创建单实例
*/
public enum Singleton {
INSTANCE;
public void method(){
//...
}
public static void main(String[] a){
//调用方法。
Singleton.INSTANCE.method();
}
}
4、双重锁
代码如下:
public class Singleton {
private static volatile Singleton instance = null;
/**
* 防止其他人new对象
*/
private Singleton(){
System.out.println("init");
}
public static Singleton getInstance(){
if(instance == null){
synchronized(Singleton.class){
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}