java 单例模式(Singleton)
2016-02-17 11:48
621 查看
确保某个对象在jvm中,只实例化一个对象。好处
1、减少new操作,降低内存使用率,减少GC压力
2、对于某个类创建对象比较频繁,对象比较大型,单例可以降低系统开销
虽然上面的代码可以基本满足单例的要求,但是线程不安全,放在多线程的环境下就应该有问题。解决方法是在getInstance方法中加上
上面synchronized关键,在每次调用getInstance方法的时候都要对对象上锁,对性能不好。改进一下,只有第一次创建对象的时候上锁
JDK里面用的单例模式最常见是:java.lang.Runtime#getRuntime()
1、减少new操作,降低内存使用率,减少GC压力
2、对于某个类创建对象比较频繁,对象比较大型,单例可以降低系统开销
public class Singleton1 { private static Singleton1 instance = null; private Singleton1(){ } //线程不安全 public synchronized Singleton1 getInstance(){ if(instance == null){ instance = new Singleton1(); } return instance; } }
虽然上面的代码可以基本满足单例的要求,但是线程不安全,放在多线程的环境下就应该有问题。解决方法是在getInstance方法中加上
public class Singleton1 { private static Singleton1 instance = null; private Singleton1(){ } public synchronized Singleton1 getInstance(){ if(instance == null){ instance = new Singleton1(); } return instance; } }
上面synchronized关键,在每次调用getInstance方法的时候都要对对象上锁,对性能不好。改进一下,只有第一次创建对象的时候上锁
public class Singleton1 { private static Singleton1 instance = null; private Singleton1(){ } public Singleton1 getInstance(){ if(instance == null){ synchronized (instance) { instance = new Singleton1(); } } return instance; } }
JDK里面用的单例模式最常见是:java.lang.Runtime#getRuntime()
相关文章推荐
- .NET c# 单体模式(Singleton)
- php实现singleton()单例模式实例
- 深入理解线程安全与Singleton
- .Net 单例模式(Singleton)
- Python下singleton模式的实现方法
- Python使用metaclass实现Singleton模式的方法
- Serialize/Unserialize破坏单例
- 可序列化单例模式的遗留问题答案
- 在spring来管理实例对象prototype和singleton的选择.针对action如何使用
- 一般Singleton模式通常有几种种形式
- 单例分享(循环引用及内存占用解决)
- 设计模式之单例模式(Singleton)
- 单例模式
- Java设计模式 创建模式-单态模式(Singleton)
- Spring3之Bean的作用域
- 单例模式
- 设计模式-创建型:单例模式(1)
- 设计模式-创建型:单例模式(2)
- Java单例设计模式
- Singleton与MonoState模式