码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之单例模式分析

时间:2017-04-22 18:50:59      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:设计   logs   加载   准备   类装载   http   技术   height   ima   

单例模式分为两大类:懒汉式和饿汉式

其最主要的区别在于:

懒汉式:指全局的单例实例在第一次被使用时构建

饿汉式:指全局的单例实例在类装载时构建

日常我们使用的最多也是懒汉式,懒汉式是按需加载,能够做到资源的最大利用

懒汉式:

技术分享

虽然这样写没什么问题,但是如果是多线程时可能出现问题了,如果多个线程同时访问 都判断了instance是否为null可能会创建两个实例

这时想到用synchronized加锁

技术分享

 

这样的话如果两个线程同时访问的话就会有一个是在等待,可以避免出现创建两个实例的情况当然这还是会有效率问题就是每次只能一个线程访问,其他线程要等待

技术分享

这里做了两次判断,如果instance为null就锁定,否侧可以多个线程同时访问,可以有效的解决Single2中的效率问题

饿汉式:

技术分享

在类装载时构建,相对于懒汉式的问题来说这是一个很完美的但也有很多缺点 :初始化太早,资源浪费,如果本省依赖其他数据,难以保证其他数据在它初始化之前准备好。

单例就讲这么多,学的还是不够

 

设计模式之单例模式分析

标签:设计   logs   加载   准备   类装载   http   技术   height   ima   

原文地址:http://www.cnblogs.com/LIUWEI123/p/6748603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!