一个线程只读一个线程修改可以不加锁吗?

来源:4-2 如何写出线程安全的程序?

慕设计2078437

2020-05-18

最近面试遇到一个问题,有一个变量,a线程修改b线程只读,不加锁可以吗?会不会存在a线程修改到一半b线程就读了然后b线程读出来的结果是错乱的情况。

写回答

1回答

bennyhuo

2020-05-18

理论上还真有可能,基本类型的 long 和 double 的读写在32位的虚拟机上印象中就可能出现这种情况。

一般你说的这种场景,如果变量的修改是原子的,加volatile就行了。

不加的话就是只读的线程可能会晚一点读到修改

2
0

大厂资深面试官 带你破解Android高级面试

改变视野和思维 深度与广度兼备的 Android 进阶面试指导课程

1636 学习 · 222 问题

查看课程