为什么饿汉模式是线程安全的?

为什么饿汉模式是线程安全的?

我知道饿汉模式只要类被加载,实例就会立刻创建

但是如果两个线程共同存储这个对象的某个成员到数据库,难道不会出现错误吗?

1.线程A:set数据1到对象(切换线程)
2.线程B:set数据2到对象(切换线程)
3.线程A:add对象中的数据到数据库(此时数据是2,A存入了B的数据)
3.线程B:add对象中的数据到数据库

第三步中的线程A存入的数据不是错的吗?

线程安全一般是说你没有经过额外的手段去同步,数据能被各个线程正常操作
可见性本就是jmm的特性之一,对于你这种场景,没变才是线程不安全的

线程安全是说多线程情况下,每次取到的都是这同一个对象,而不是另外的新的对象。
你所说的问题在于多线程下,有一个单例对象,线程A set值还未取出,就被线程B覆盖,导致线程A实际取出的是线程B的值,这两个并不是一样的问题
那你需要保证线程a取出值后再线程B再取值
spring提供一个注解 scope,可以对每个请求生成一个对象,这样就能解决你的问题
望采纳哦!

饿汉在单例模式中天然线程安全,这里需要说明单例模式 是指在多线程下使用是同一个对象,且饿汉不是懒加载所以天然线程安全;你这里既不是使用了单例,那你要什么饿汉线程安全,你这使用的方式根本不是单例更谈不上什么饿汉。