10年 Java程序员,硬核人生!勇往直前,永不退缩!

欢迎围观我的git:https://github.com/R1310328554/spring_security_learn 寻找志同道合的有志于研究技术的朋友,关注本人微信公众号: 觉醒的码农,或Q群 165874185

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

单例

http://www.iteye.com/topic/537563

3、单例模式有以下特点: 

  • 单例类只能有一个实例; 
  • 单例类必须自己创建自己的唯一的实例; 
  • 单例类必须给所有其他对象提供这一实例;
  • 私有构造方法,避免外部创建实例;
  • 私有静态实例;
  • 静态工厂方法,返回此单例类唯一的实例。

 

—————— 私有静态实例——java 语言机制的static保障了内存(具体来说是方法内存区)中只有一个引用。。! 这个非常关键!!!

Rust

 

 

单例的作用?

某个创建很耗资源、时间的类,

整个项目运行中只能有一个实例存在的类

 

同时应用场景有单线程、多线程

 

如果是多线程,还要注意其线程安全的问题。

饿汉式的实现方式虽然貌似开销比较大,但是不会出现线程安全的问题,也是解决线程安全的单例实现的有效方式。 —— 使用static关键字修饰的变量只有在第一次使用的时候才会被初始化,而且一个类里面static的成员变量只会有一份,这样就保证了无论多少个线程同时访问,所拿到的Resource对象都是同一个

如果是懒汉式模式—— 则需要考虑线程安全,加synchronized 或其他。。

 

总结:

单线程的单例模式很简单,注意那么几个点即可,一般谁都会写。

多线程情况下,相对单线程要复杂很多,就要紧紧的盯住那个getInstance的静态方法了!

 

posted on 2014-07-20 02:32  CanntBelieve  阅读(240)  评论(0编辑  收藏  举报