您的位置:首页技术文章
文章详情页

java - getValue 和 increment 方法是互斥的?

浏览:38日期:2024-01-21 08:49:07

问题描述

public class CheesyCounter { // Employs the cheap read-write lock trick // All mutative operations MUST be done with the ’this’ lock held @GuardedBy('this') private volatile int value; public int getValue() { return value; } public synchronized int increment() {return value++; }}

假如一个线程在写,另一个线程在读,不会出现读线程读到的值是写线程还没更新之前的值嘛?也就是读写线程不同步的情况

问题解答

回答1:

volatile关键字就是用来保证内存可见性的。

回答2:

volatile 修饰的 value 使用 getValue() 读取的时候,会一直获取到最新值,满足可见性volatile 能保证一次读写可见性,复合操作 (比如 value++) 不能保证,需要进行加锁或其他同步措施

java - getValue 和 increment 方法是互斥的?

java - getValue 和 increment 方法是互斥的?

标签: java
相关文章: