线程的问题

线程的问题

什么是线程,什么是线程安全,为什么饿汉式线程就安全,懒汉式线程就不安全

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕阿慧 2020-06-13 09:51:35

同学你好,多个线程的执行顺序和时间都是不确定的,这取决于操作系统的调度。

懒汉式多线程执行过程:当多个线程判断if(instance==null)条件成立时,多个线程就会创建多个对象,最后多个线程调用getInstance方法得到的对象就是不一样的。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕沐1462760 #1
    意思是当对象没创建时,多个线程同时判断对象为空的,会创建出多个对象,所以会出问题,是这个意思吗
    2020-06-13 10:39:10
  • 好帮手慕阿慧 回复 提问者 慕沐1462760 #2
    同学你好,是的,你的理解是正确的。祝学习愉快~
    2020-06-13 10:42:50
好帮手慕阿慧 2020-06-09 16:04:52

同学你好,创建好一个静态的对象供系统使用。线程每次都只能也必定只可以拿到这个唯一的对象。因此可以说,饿汉式单例就是线程安全的。

例如:

http://img1.sycdn.imooc.com//climg/5edf423d0999967108500898.jpg

与之对比,懒汉式线程每次拿到的对象可能不一样。因此可以说,懒汉式单例不是线程安全的。

例如:

http://img1.sycdn.imooc.com//climg/5edf426c0993151c08420940.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕沐1462760 #1
    懒汉式每次拿到的对象为什么有可能不一样,懒汉式不也是创建一次后,后面再调用时都用前面创建好的吗
    2020-06-13 08:54:40
好帮手慕阿慧 2020-06-09 11:48:08

同学你好,

1、线程是操作系统能够进行运算调度的最小单位。也就是说不同的对象执行不同的任务,是由不同的线程完成的。

2、线程安全就是多线程访问时,采用了加锁机制,当一个线程访问某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。

3、饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变。而懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的,所以汉式线程存在风险。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕沐1462760 #1
    为什么创建好一个静态的对象供系统使用,线程就是安全的
    2020-06-09 13:33:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师