读书人

单例模式上的线程安全

发布时间: 2012-09-01 09:33:03 作者: rapoo

单例模式下的线程安全

/* * 普通的,线程不安全的单例模式 */public class Singleton {private static Singleton instance;public static Singleton getInstance(){if(instance == null){return new Singleton();}else{return instance;}}}/* * 强制实现线程安全的单例模式。 */public class Singleton {    private static Singleton instance;    public static Singleton getInstance() {        synchronized (instance) {            if (instance == null) {                return new Singleton();            } else {                return instance;            }        }    }}public class Singleton {/** 静态方法是线程安全的,因为静态方法内声明的变量,每个线程调用时,都会新创建一份,而不会共用一个存储单元* 静态变量是非线程安全的,由于是在类加载时占用一个存储区,每个线程都是共用这个存储区的,所以如果在静态方法里使用了静态变量,这就会有线程安全问题!*/ static class SingletonHolder {                 static Singleton instance = new Singleton();             }             public static Singleton getInstance() {                 return SingletonHolder.instance;             }  }

读书人网 >编程

热点推荐