实现java中的单例模式
时间: 2023-05-24 21:04:50 浏览: 152
Java中单例模式有以下几种实现方式:
1. 饿汉式单例模式
这种方式在类加载时就创建了单例对象,因此也称为静态单例模式。由于在类加载时就已经创建了单例对象,所以不存在线程安全问题。但是单例对象在整个应用程序生命周期内都存在,可能会降低应用程序的性能。
```java
public class Singleton{
//在类加载时就创建单例对象
private static Singleton instance = new Singleton();
//私有构造函数,防止外部实例化
private Singleton(){}
//提供公有的访问方法
public static Singleton getInstance(){
return instance;
}
}
```
2. 懒汉式单例模式
这种方式延迟了单例对象的实例化,因此也称为懒汉式单例模式。在多线程环境下,可能会存在线程不安全的情况。
```java
public class Singleton{
//延迟创建单例对象
private static Singleton instance = null;
//私有构造函数,防止外部实例化
private Singleton(){}
//提供公有的访问方法,采用双重检查锁定保证线程安全
public static Singleton getInstance(){
if(instance == null){
synchronized(Singleton.class){
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
```
3. 静态内部类单例模式
这种方式采用静态内部类来实现单例对象的延迟创建,既可以保证线程安全,又可以实现懒汉式实例化方式。
```java
public class Singleton{
//私有构造函数,防止外部实例化
private Singleton(){}
//静态内部类,保证线程安全和懒加载
private static class SingletonHolder{
public static final Singleton instance = new Singleton();
}
//提供公有的访问方法
public static Singleton getInstance(){
return SingletonHolder.instance;
}
}
```
阅读全文