单例模式 下的线程锁问题

来源:互联网 发布:html5连接mysql数据库 编辑:程序博客网 时间:2024/05/20 00:53
package com.demo;/* * 单例模式 * 下的线程锁问题 */public class SingleTHreadLock {}// ----------懒汉式(迟加载)class Single1 {private static Single1 s = null;private Single1() {}// -------------------------使用同步函数的方式,效率比较低,因为同步外的线程每一次都需要判断锁public static synchronized Single1 getInstance1() {if (s == null) {s = new Single1();}return s;}// ----------------------使用双重判断,效率更高public static Single1 getInstance2() {if (s == null) {synchronized (Single1.class) {if (s == null) {s = new Single1();}}}return s;}}// -----------饿汉式class Single2 {private static Single2 s = new Single2();private Single2() {}public Single2 getInstance() {return s;}}