发布网友 发布时间:2022-04-20 09:04
共4个回答
热心网友 时间:2023-09-29 01:39
多线程主要是利用cpu,而内存则是发生线程冲突的地方。内存就是你放对象的地方。所谓不安全,是破坏了数据的特性,这里就是单例。恶汉是预先建好,就这一次,自然不会出现更多实例。而懒汉,请求来时再创建,可能同时处理多个请求,创建多个实例。追问创建多个实例就不安全了吗?能再讲讲吗?可以给举个例子吗?再有操作同一个对象就安全了吗,我看那个计时器的例子,就是操作servicecount加1,线程a操作service还没有将结果写入,然后b进来又执行一次,最终计时器加1,但实际请求操作是做了两次计数,就出现线程安全问题了,那它这时候a和b操作的不也是同一个对象吗
热心网友 时间:2023-09-29 01:39
线程安全-百度百科
本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。
线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。
我觉的这个定义是比较准确的。
我的理解是这样的,线程之所以产生安全问题是对原来正确数据造成改变污染。对于单例懒汉模式下,单例类原本在多线程的情况下应该只会产生一个对象,实际上会出现产生多个对象,数据出现错误,所以说线程是不安全的;然而对与单例饿汉情况,多线程在实例化单例类时并不会出现多的对象的情况,数据正确,所以并未出现线程安全。
对于你将的多个对像............的问题:准确的是说,多个线程访问共享资源会出现线程安全,当然这也是包含在数据被污染的大集合内。
我结合该问题写的文章,多多支持:网页链接
热心网友 时间:2023-09-29 01:40
哦哦,忽略我刚才的评论,你的问题是在 不是同一个对象是不是就不安全了 . 这个问题也不尽然啊,要具体的看这个对象干啥事.如果你刚才说的那个计时器,如果加上单例模式,就安全了.如果不加上单例模式,不安全的原因是 :热心网友 时间:2023-09-29 01:40
单例模式之饿汉式,由于是在类加载时加创建了对象,且类加载只会加载一次(不考虑特殊极端情况),适合全局唯一的对象,比如MyBatis中的SqlSessionFactory对象。