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;
//
// }
上一篇: 油猴插件和脚本的安装流程
下一篇: Maven笔记1:环境搭建