标签:输出 div 允许 共享变量 检验 bsp str 线程 安全
class LazyMan { //单例模式之懒汉式,只有在需要的时候才被创建, //因为多个线程共享一个变量,所以会产生线程安全问题 static private LazyMan lazyMan; /** * 因为要解决线程安全问题所以需要加上synchronized,但是这样 * 加上后会使得程序效率很低,不仅仅是因为每次锁只允许一个线程进入, * 而且只有lazyMan为null的时候才会去创建,才会产生线程安全问题, * 不为null的时候是不会产生线程安全问题的,所以不能写成如下代码 */ // static synchronized LazyMan getLazyMan() { // if (lazyMan == null) { // lazyMan = new LazyMan(); // } // return lazyMan; // } //这是静态方法 static LazyMan getLazyMan() { //双重检验,因为如果有两条线程同时访问,假设线程A已经创建好了对象,
//但是线程B因为也是null,如果不加第二次判断那么线程B也会创建对象。 if (lazyMan == null) { //静态代码块用共享变量的字节码文件 synchronized (LazyMan.class) { if (lazyMan == null) { lazyMan = new LazyMan(); } } } return lazyMan; } } public class Demo { public static void main(String[] args) { LazyMan lazyMan1 = LazyMan.getLazyMan(); LazyMan lazyMan2 = LazyMan.getLazyMan(); System.out.println(lazyMan1 == lazyMan2); } } 输出: true
标签:输出 div 允许 共享变量 检验 bsp str 线程 安全
原文地址:https://www.cnblogs.com/lzh110/p/9461679.html