关闭

单例模式

标签: 设计模式线程安全单例模式
245人阅读 评论(0) 收藏 举报
分类:

单例模式其实是一个很简单的设计模式,其作用就是为了让某一个类的全局实例只有一个。
我认为这个模式在oop上思想的增加是很少的。但这个模式却是对多线程安全认知的一个很好的例子。

这是我代码的demo单例github demo

其实我代码中的注释也写的很明白了。
能保证线程安全的单例大概有三种写法。

第一种: 双重检查就是SingletonDobuleCheck这个类的写法,使用了java内置的加锁机制,synchronized关键字实现,其缺点就是低于java5的版本不能兼容,不过这个也可以忽视了。

第二种 第二种就是懒加载,依赖jvm的机制保证创建时的线程安全,但是会在其类加载过程时就会对其进行实例化,如果这个类持有很多资源,会造成资源的浪费。

第三种 第三种就是使用静态内部类,其保证线程安全的原理跟第二种一样,但其使用了静态内部类就避免了第二种的缺点,这也是我所推荐的实现方式,代码还简短。

0
0
查看评论

单例模式的自动析构

总所周知,单例模式如果不主动调用,在进程结束时是不会析构的,而是仅仅把内存释放掉而已 所以,如果希望在析构时进行某些操作,在进程结束前,可以主动调用析构函数,如下面类中的delMe函数(xSingleton::getMe().delMe();) 可是,如果每定义这样一个类,都
  • mengmingqiang
  • mengmingqiang
  • 2011-08-31 15:43
  • 2739

Selenium使用单例模式

在项目中使用Selenium进行自动化,非常自然想到用单例对WebDriver进行管理,出于如下考虑:         1)提高成功率。多个实例会使得出现多个浏览器窗口,界面识别会出现问题,影响成功率。   ...
  • wanglian2017
  • wanglian2017
  • 2017-06-13 21:58
  • 357

Java中用单例模式有什么好处

Java Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。我们在浏览BBS、SNS网站的时候,常常会看到“当前在线人数...
  • huanbia
  • huanbia
  • 2017-05-12 10:05
  • 2343

一个单例模式的简单例子

ex1: public class Singleton    {        private static final Singleton singleton = null;  ...
  • silence1214
  • silence1214
  • 2009-03-29 14:56
  • 23497

单例模式的三种常用的形式

自己做下笔记: //单例模式:他的应用场景—如果多个程序要操作一个对象中的数据,那么就要保证只有一个对象。 //饿汉式 publicclassSingle {     privatestaticfinal Single s = new Single()...
  • jiyidehao
  • jiyidehao
  • 2016-02-28 12:26
  • 486

C#单例模式的几种实现方式

C#单例模式的几种实现方式
  • yanlovehan
  • yanlovehan
  • 2016-11-09 10:07
  • 2122

单例模式 -通俗易懂的讲解

什么是单例模式: 保证一个类有且仅有一个实例,并提供它的全局访问点。 单例模式有什么用: 其实单例的作用在于避免产生太多实例,也就是不用new那么多次,new一次就占用一次内存的资源,new多了电脑也会慢的。 具体举个例子吧。 在取款的时候,绝对不允许有多个对象,假如多个对象同时操作数据库...
  • yangxujia
  • yangxujia
  • 2013-04-10 01:41
  • 915

单例模式高并发问题

单例模式下,并发量很高,获得对象有两种方式:一种是使用懒汉模式,即系统初始化时初始化对象;第二种是细化锁的粒度,使用读写锁。 第二种方法如下: 单例虽然没有缓存写的那么平凡,如果在getinstance方法上加sychonize会大大影响性能,单例的写只有在第一使用时才会写。使用读写锁操作,基本上都...
  • gongzi2311
  • gongzi2311
  • 2015-02-10 17:26
  • 2121

内部类的单例模式

* 上面的单例实现存在小小的缺陷,那么 有没有一种方法,既能够实现延迟加载,又能够  * 实现线程安全呢?  *       还真有高人想到这样的解决方案了,这个解决方案被称为Lazy initializati...
  • ygl6150373
  • ygl6150373
  • 2016-11-20 16:39
  • 859

java中实现单例模式的几种方式,简单易懂

一、饿汉式单例类 public class Singleton { private Singleton(){ } private static Singleton instance = new Singleton(); private st...
  • yuxin6866
  • yuxin6866
  • 2016-08-14 09:39
  • 2651
    个人资料
    • 访问:74866次
    • 积分:1324
    • 等级:
    • 排名:千里之外
    • 原创:59篇
    • 转载:1篇
    • 译文:0篇
    • 评论:31条