java单例模式的几种写法


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;
	//
	// }
	

你可能感兴趣的:(java)