volatile 能保证什么?为什么不能单靠它保证 i++ 的线程安全?
参考答案
volatile 使相关读写具有可见性并建立规定的有序性关系,但 i++ 由读取、计算和写回组成,整体并非原子操作。
题目解析
多个线程可能读到同一旧值而丢失更新;原子计数可用 AtomicInteger 或在锁保护下执行。
volatile 使相关读写具有可见性并建立规定的有序性关系,但 i++ 由读取、计算和写回组成,整体并非原子操作。
多个线程可能读到同一旧值而丢失更新;原子计数可用 AtomicInteger 或在锁保护下执行。