A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© love$$-IT 中级黑马   /  2015-2-7 23:02  /  1299 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

单例模式中两种模式的区别?

12 个回复

倒序浏览
一个是加载类的时候就将对象初始化了,另一个是什么时候调用这个对象什么时候初始化,我的理解,可能语言表达的不太准确。
回复 使用道具 举报
温晓慧 发表于 2015-2-7 23:09
一个是加载类的时候就将对象初始化了,另一个是什么时候调用这个对象什么时候初始化,我的理解,可能语言表 ...

嗯,但是那个在安全性方面了,该怎么理解?
回复 使用道具 举报
单例设计模式:
饿汉式:是线程安全的,操作共享变量的语句是原子性的。类一加载,就创建对象。
懒汉式:是线程不安全的,操作共享变量有多条语句。调用时,创建对象。延时加载
回复 使用道具 举报 1 0
饿汉式:一开始就初始化了对象
懒汉式:在方法内部 用到对象的地方初始化对象
回复 使用道具 举报
恶汉试: 先创建唯一的私有对象,提供接口进行返回,一般单例模式就用这个,简单并且线程安全。
懒汉式:延时创建,就是什么时候用什么时候实例化对象,缺点是会出现安全问题,当多个线程同时访问会出现问题。要用懒汉式的话,要进行同步,或者使用lock,对线程保护。
回复 使用道具 举报
Doug 中级黑马 2015-2-7 23:44:32
7#
饿汉式会在类中创建一个私有的静态的类对象(即初始化),该对象唯一,也就是单例。懒汉式,顾名思义,懒到有需求才做出反应,
回复 使用道具 举报
love$$-IT 发表于 2015-2-7 23:16
嗯,但是那个在安全性方面了,该怎么理解?

安全性,主要是考虑的,如果你判断一个对象是否为空的时候,判断完可能a线程就失去执行权了,b线程进来判断依然为空,创建对象,a得到执行权之后就不会判断了,直接创建对象,所以这样可能就不是单例了。会创建多个对象
回复 使用道具 举报
谢谢各位,这个我大体是理解了。
回复 使用道具 举报
rehan 中级黑马 2015-2-10 12:21:16
10#
就是对象的建立区别,饿汉式是一开始就有了对象,而懒汉式是对象随着方法而加载。。。
回复 使用道具 举报
懒汉式和饿汉式我都快忘记了,唉……看来要早点复习了~~
回复 使用道具 举报
节省资源嘛 用到时才加载
回复 使用道具 举报
一般是用饿汉式把?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马