线程安全的单例模式 的各种实现 总结
2014-06-30 17:13
567 查看
第一种:饿汉式
public class EagerSingleton { private static EagerSingleton instance = new EagerSingleton(); private EagerSingleton(){}; public static EagerSingleton getInstance(){ return instance; } }
第二种:懒汉式同步整个getInstance
public class ThreadSafeSingelton{ //variables and constructors... //多线程并发时效率低下 public static synchronized ThreadSafeSingelton getInstance(){ if(instance == null){ instance = new ThreadSafeSingelton(); } retrun instance; } }
第三种:Doublle-Check Locking
public class DoublleCheckSingleton{ private volatile static DoublleCheckSingleton instance = null; //constructors public static DoublleCheckSingleton getInstance(){ if(instance = null){//check if it is created synchronized ( DoublleCheckSingleton.class) { //synchronize creation block if(instance ==null) //double check if it is created instance = new DoublleCheckSingleton(); } } retrun instance; } }
Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
第四种:内部类 Initialization on demand holder
public class LazyLoadedSingleton{ private LazyLoadedSingleton (){ } private static class LazyHolder { //holds the singleton class private static final LazyLoadedSingleton singletonInstance = new LazyLoadedSingleton(); } public static LazyLoadedSingleton getInstance() { return LazyHolder.singletonInstance; } }
JLS保证 JVM加载 LazyHolder时不会出现并发问题。
****防止反序列化
public class SerialibleSingleton implements Serialible { private static final long serialVersionUID = -609961712631545485L; static SerialibleSingleton singleton = new SerialibleSingleton(); private SerialibleSingleton(){} private Object readResole(){ return singleton; } }
第五种:枚举单例模式
public enum Sington{ INSTANCE; public void singletonOpr(){ // some opertions } }
相关文章推荐
- 这里实现定界加锁线程安全的单例模式
- 线程安全的单例模式的几种实现方法分享
- Java线程安全的单例模式的几种实现
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
- 线程安全的单例模式的几种实现方法分享
- 高并发下最全线程安全的单例模式几种实现
- .NET Romoting 学习总结(三)—— Remoting技术之设计模式实现代码安全
- 线程安全的单例模式的实现
- DCL双检查锁机制实现的线程安全的单例模式
- 实现一个线程安全的单例模式
- 线程安全的单例模式的几种实现方法分享
- 【Todo】单例模式各种实现方式及并发安全
- Java线程安全单例模式实现
- 线程安全的单例模式的几种实现方法分享
- Java线程安全的单例模式的几种实现
- C++ 实现的线程安全的单例模式类
- java线程安全的实现方法总结学习
- ACE网络开发中,各种Reactor实现的总结
- 基于Spring+Ibatis的安全线程实现
- ACE网络开发中,各种Reactor实现的总结