【java设计模式系列】2. 单例模式(Singleton)

时间:2022-07-25
本文章向大家介绍【java设计模式系列】2. 单例模式(Singleton),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1. 懒汉模式

优点:延迟加载

缺点:会产生多线程同步吧

public class Singleton {

	private static Singleton instance = null;

	private Singleton() {
	}

	public static Singleton getInstance() {
		if (instance == null) {
			instance = new Singleton();
		}
		return instance;
	}

}

会产生多线程问题吧?改造如下:

public class Singleton {

	private static Singleton instance = null;

	private Singleton() {
	}

	public static synchronized Singleton getInstance() {
		if (instance == null) {
			instance = new Singleton();
		}
		return instance;
	}

}

对整个方法都加锁,太重了。实际只在第一次调用才需要加锁, 如何改?

TODO

2. 饿汉模式

优点:不会出现多线程同步问题?

缺点:对整个方法使用同步,会产生性能问题

public class Singleton {

	private static Singleton instance = new Singleton();

	private Singleton() {
	}

	public static Singleton getInstance() {
		return instance;
	}

}