单例的实现(dispatch_once_t synchronized)

原创 2015年11月21日 12:40:50

单例的实现(dispatch_once_t synchronized)

使用这两种方式都能够实现单例,简单快速,在ARC模式运行正常

+(instancetype)config{
    static HConfig *instance;

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{

        //初始化
        instance = [[HConfig alloc] init];
    });

    return instance;
}

+(instancetype)configSync{
     static HConfig *instance;

    //用同步锁来实现单例
    @synchronized(self){
        if(instance == nil){
            instance = [[HConfig alloc] init];
        }
    }

     return instance;
}

调用的时候打印正常,是同一个对象

以下是调用的打印方法

     HConfig *config1 = [HConfig config];
    HConfig *config2 = [HConfig config];

    NSLog(@"config1 %@",config1);
    NSLog(@"config2 %@",config2);

    HConfig *config3 = [HConfig configSync];
    HConfig *config4 = [HConfig configSync];

    NSLog(@"config3 %@",config3);
    NSLog(@"config4 %@",config4);

运行效率

dispatchoncet 相对高一些

单例猛于虎,请小心使用!

单例模式是一个在iOS里面备受使用的设计模式。但是我们在尽情使用它的时候,一定要注意到它其实也有很多隐含的问题。 其实这篇文章也相当于看了objcio上的避免滥用单例的一篇总结。 结合自己最近开发...
  • dark19940411
  • dark19940411
  • 2016年10月21日 11:48
  • 238

不用synchronized和lock,实现线程安全的单例模式

总结: 单例模式必然会被多个线程访问。多线程访问一定要注意锁的问题。参考博主之前分享的转载文章《java中的锁》,有几种方式如下: 自旋锁类锁和对象锁共享锁和排它锁偏向锁互斥锁闭锁活锁分段锁无锁...
  • vincentff7zg
  • vincentff7zg
  • 2017年02月27日 13:45
  • 1004

浅谈java单例模式——优点以及为什么使用到synchronized

单例模式的两种形式,解决了,为什么单例模式中要使用同步锁,为什么要进行两次if判断是否为空...
  • IWantToHitRen
  • IWantToHitRen
  • 2015年09月09日 19:23
  • 1547

Java学习之线程锁--单例模式写法--synchronized

单例设计模式: 1):懒汉式:(不一定安全,确保只有一份对象需要synchronized) 1.构造器私有化 2.声明私有的静态属性 3.对外提供访问属性的静态方法,确保该对象存在。 (1):写法,多...
  • haitaofeiyang
  • haitaofeiyang
  • 2015年03月07日 23:58
  • 3530

单例模式(Singleton)的同步锁synchronized

单例模式,有“懒汉式”和“饿汉式”两种。 懒汉式 单例类的实例在第一次被引用时候才被初始化。 public class Singleton { private static ...
  • xuewater
  • xuewater
  • 2014年12月30日 14:59
  • 6844

synchronized 在单例singleton模式中的应用

在单例模式中:double checked locking模式下 做同步需要锁住代码段 方法如下: public static DoubleCheckSingleton getInstance(...
  • a478555
  • a478555
  • 2016年04月01日 10:55
  • 163

通过单例模式理解synchronized,volatile

转载地址:http://www.jianshu.com/p/5b2f063d9f68 synchronized 关键字 synchronized关键字是用来控制线程同步的,就是在多线程的环...
  • scott2017
  • scott2017
  • 2016年07月28日 09:27
  • 749

关于Java关键字synchronized——单例模式的思考

精彩的设计模式盛宴刚刚落下帷幕,三天的时间,真是学习到了很多。其中,遗留的很多的问题。今天就谈谈synchronized这个关键字。关于对synchronized关键字的思考是从单例模式引发的。在代码...
  • u012904383
  • u012904383
  • 2015年08月21日 23:49
  • 1568

单例模式+synchronized的学习

Java线程同步学习
  • cuihaoren01
  • cuihaoren01
  • 2016年03月25日 14:22
  • 354

iOS中使用dispatch_once实现单例及注意事项

iOS中使用dispatch_once实现单例及注意事项
  • lyl123_456
  • lyl123_456
  • 2016年09月07日 19:50
  • 1677
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单例的实现(dispatch_once_t synchronized)
举报原因:
原因补充:

(最多只允许输入30个字)