volatile 能使得一个非原子操作变成原子操作吗?
Can volatile make a non-atomic operation atomic?
题目类型: 技术面试题
这是一道技术面试题,常见于澳洲IT公司面试中。
难度: hard
分类: System Design
标签: volatile, atomicity, long, double
参考答案摘要
答案 一个典型的例子是在类中有一个 long 类型的成员变量。如果你知道该成员变量会被多个线程访问,如计数器、价格等,你最好是将其设置为 volatile。为什么?因为 Java 中读取 long 类型变量不是原子的,需要分成两步,如果一个线程正在修改该 long 变量的值,另一个线程可能只能看到该值的一半(前 32 位)。但是对一个 volatile 型的 long 或 double 变量的读写...
本题提供 STAR 原则详细解答和技术解析,登录匠人学院学习中心即可查看完整答案。