java 饿汉式单例模式
时间: 2023-08-30 18:09:42 浏览: 100
饿汉式单例模式是一种创建单例对象的方式,它的特点是在类加载时就创建了单例对象,因此也被称为“静态单例模式”。
饿汉式单例模式的实现方式很简单,只需要在类中定义一个静态的、final的单例对象,然后提供一个静态的、公共的、不可修改的方法来获取这个单例对象,如下所示:
```
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return INSTANCE;
}
}
```
在上面的代码中,Singleton类的构造方法是私有的,这意味着外部无法直接创建Singleton对象。而getInstance()方法则返回了一个静态的、final的单例对象INSTANCE,这个对象在类加载时就已经被创建了。
饿汉式单例模式的优点是实现简单、线程安全,因为单例对象在类加载时就已经被创建了,所以不存在线程安全问题。但是它的缺点也很明显,那就是如果单例对象的构造方法中需要进行复杂的计算或者初始化,那么这个过程会影响类的加载速度,并且占用内存空间。
相关问题
饿汉式单例模式如何保证线程安全
饿汉式单例模式可以通过在类加载时就创建实例的方式来保证线程安全。具体实现如下:
```java
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {
// 私有化构造函数,防止外部创建实例
}
public static Singleton getInstance() {
return instance;
}
}
```
在这个实现中,私有化了构造函数,使得外部无法直接创建实例。同时,将实例对象定义为静态变量,并且在类加载时即进行初始化,确保了在多线程环境下只会创建一个实例。
Java写出懒汉式和饿汉式单例设计模式
懒汉式单例模式是在需要使用时才创建实例,而饿汉式单例模式则是在类加载时就创建实例。在Java中,懒汉式单例模式可以使用双重检查锁定来实现线程安全,而饿汉式单例模式则可以使用静态变量来实现。具体实现方式可以参考相关的Java编程书籍或网络资源。
阅读全文