河北省住房与城乡建设厅网站,网站的开发流程分哪几步,网站开发推荐一本书,朝阳网站建设 高碑店单例模式 饿汉模式 package com.wz.cinema.platform.server.util;public class DataManager {/*** 单例模式#xff1a;整个类在运行中只会有一个实例* 既然是在运行中只有一个实例#xff0c;那么就必须* 考虑多线程环境** 单例模式分为懒汉模式和饿汉模式* 饿汉模式本身就是… 单例模式 饿汉模式 package com.wz.cinema.platform.server.util;public class DataManager {/*** 单例模式整个类在运行中只会有一个实例* 既然是在运行中只有一个实例那么就必须* 考虑多线程环境** 单例模式分为懒汉模式和饿汉模式* 饿汉模式本身就是线程安全的单例*///饿汉模式(实例开始会初始化)private DataManager(){}private static final DataManager instance new DataManager();public static DataManager getInstance(){return instance;}
} 懒汉模式 package com.wz.cinema.platform.server.util;public class DataManager {/*** 单例模式整个类在运行中只会有一个实例* 既然是在运行中只有一个实例那么就必须* 考虑多线程环境** 单例模式分为懒汉模式和饿汉模式* 饿汉模式本身就是线程安全的单例*///懒汉模式没有初始值第一次用的时候才会赋值//考虑多线程并发情况下依然存在多例private static volatile DataManager instance;
// public static DataManager getInstance(){
// //先判断在赋值
// if (instance null){
// instance new DataManager();
// }
// return instance;
// }//加锁,在方法上家的锁从效率层面来说比较低下】//因为整个类只有一个实例只需要第一个方位的线程将实例创建出来之后//后面的线程秩序要拿出实例即可//方法上加锁会让抢到锁的线程拿到实例其他线程都会阻塞
//public synchronized static DataManager getInstance(){
// //先判断在赋值
// if (instance null){
// instance new DataManager();
// }
// return instance;
//}//判断实例为空时才会抢锁不为空直接返回实例
public static DataManager getInstance(){//先判断在赋值if (instance null){synchronized (DataManager.class){if (instance null){instance new DataManager();}}}return instance;
}} 双检锁double-check-lock 双重检查锁(Double-Check Lock也称为双重检查锁定)是在单例模式中使用的一种优化技术用于在多线程环境下延迟初始化实例并保证线程安全。