双重检查加锁,实现单例模式

来源:互联网 发布:怎么注册淘宝云客服 编辑:程序博客网 时间:2024/04/20 03:13

/**volatile关键词确保:当uniqueInstance变量被初始化为Singleton实例时,*多个线程正确的处理uniqueInstance变量(对于volatile修饰的变量,*jvm虚拟机只是保证从主内存加载到线程工作内存的值是最新的,volatile并不能*保证原子操作)**synchronized(Singleton.class)借助同步块,与volatile配合实现双重检查加锁,*使用同步块的方法而不使用同步方法的好处是:只在第一次创建的时候才同步,避免*了每次调用同步方法时的的消耗*/public class Singleton{private volatile static Singleton uniqueInstance; private Singleton(){}public static Singleton getInstance(){if (uniqueInstance == null) {synchronized(Singleton.class){if (uniqueInstance == null) {uniqueInstance = new Singleton();}}}return uniqueInstance;}}


0 0