- public class Singleton {
- private static Singleton instance = new Singleton();
- private Singleton (){}
-
- public static Singleton getInstance() {
- return instance;
- }
- }
这种方式在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快。
- public class Singleton {
- private static Singleton instance;
- private Singleton (){}
-
- public static Singleton getInstance() {
- if (instance == null) {
- instance = new Singleton();
- }
- return instance;
- }
- }
懒汉模式申明了一个静态对象,在用户第一次调用时初始化,虽然节约了资源,但第一次加载时需要实例化,反映稍慢一些,而且在多线程不能正常工作。
- public class Singleton {
- private static Singleton instance;
- private Singleton (){}
-
- public static synchronized Singleton getInstance() {
- if (instance == null) {
- instance = new Singleton();
- }
- return instance;
- }
- }
这种写法能够在多线程中很好的工作,但是每次调用getInstance方法时都需要进行同步,造成不必要的同步开销,而且大部分时候我们是用不到同步的,所以不建议用这种模式。