最安全的单例模式--java使用内部类实现单例模式
2016-10-10 12:57
483 查看
实现类
public class Singleton {
private static class LazyHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton (){}
public static final Singleton getInstance() {
return LazyHolder.INSTANCE;
}
}
测试
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Singleton singleton1 = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();
if (singleton1 == singleton2)
System.out.println("same");
}
}
说明
单例模式实现方式有好多种,但大部分都会有多线程环境下的问题;使用内部类可以避免这个问题,因为在多线程环境下,jvm对一个类的初始化会做限制,同一时间只会允许一个线程去初始化一个类,这样就从虚拟机层面避免了大部分单例实现的问题,可以尝试下
public class Singleton {
private static class LazyHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton (){}
public static final Singleton getInstance() {
return LazyHolder.INSTANCE;
}
}
测试
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Singleton singleton1 = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();
if (singleton1 == singleton2)
System.out.println("same");
}
}
说明
单例模式实现方式有好多种,但大部分都会有多线程环境下的问题;使用内部类可以避免这个问题,因为在多线程环境下,jvm对一个类的初始化会做限制,同一时间只会允许一个线程去初始化一个类,这样就从虚拟机层面避免了大部分单例实现的问题,可以尝试下
相关文章推荐
- 最安全的单例模式--java使用内部类实现单例模式
- Java:使用内部类实现类的多重继承
- JAVA中对同一问题分别使用内部类与匿名内部类实现
- GOF23设计模式之观察者模式的理解与实现2(使用java自带的观察者类和接口)
- 从头认识java-18.2 基本的线程机制(6)-使用构造器或者内部类来实现多线程的编码变体
- Java使用简单工厂模式对面向接口编程模式的深度解耦实现
- 怎样使用Java实现Factory设计模式
- 使用开放源代码框架的 Java 应用程序的 Web 服务集成模式,第 1 部分: 实现调用模式
- Java使用简单工厂模式对面向接口编程模式的深度解耦实现
- java使用BlockingQueue实现生产消费者模式
- 一步步学习java并发编程模式之Active Object模式(五) 使用JDK的内置实现
- 有趣的Java - 简单使用enum实现策略模式Strategy
- java实现策略模式使用示例
- JAVA中对同一问题分别使用内部类与匿名内部类实现
- 2.1、Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职
- 使用内部类让Java实现“多继承”
- 观察者模式(Observer Pattern)(三):使用java内置的支持实现HeadFirst气象站
- JAVA中对同一问题分别使用内部类与匿名内部类实现
- 使用java类库中的Observable类和Observer接口实现观察者模式(精简版)
- 如何使用 Java8 实现观察者模式?(上)