欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java单例模式的几种写法

程序员文章站 2022-07-14 08:40:22
...


private static final UserService userService = new UserService();

private UserService() {

}

/**
* 采取预加载的方式,userService在 classLoader 载入UserService.class 已经声明了对象
*
* @return
*/
public static UserService getInstance() {
return userService;
}

/**
* 用了synchronized 多个线程排队的情况比较严重
*
* @return
*/
// public static synchronized UserService getInstance(){
// if(userService==null){
// userService = new UserService();
// }
// return userService;
// }
/**
* 可能会创建多个实例的情况
*
*
*/
// public static UserService getInstance() {
// if (userService == null) {
// synchronized (UserService.class) {
//
// userService = new UserService();
// }
// }
// return userService;
//
// }
// /**
// * 通过双检查来判断,当前实例是否为空,第一次创建实例的时候可能会出现排队情况
// *
// * 创建完实例后,以后不会有排队的情况
// *
// */
// public static UserService getInstance() {
// if (userService == null) {
// synchronized (UserService.class) {
// if (userService == null) {
// userService = new UserService();
// }
// }
// }
// return userService;
//
// }