文章详情页
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
相关文章:
1. 微信小程序如何加载h5页面2. javascript - IOS没有上APP Store如何实现热更新?3. 网页爬虫 - Python爬虫返回状态码与实际情况不符?4. URL访问有问题啊5. python - 能通过CAN控制一部普通的家用轿车吗?6. mysql - oracle物化视图和临时表的区别是什么?7. MYSQL代码执行错误:FUNCTION any_value does not exist8. node.js - nodejs开发中常用的连接mysql的库9. paramiko - Python tempfile生成的文件能不能拷贝到远程服务器?10. android - 第三方App调用高德地图,总是直接进入到导航页面,有没有办法进入首页?
排行榜