文章详情页
java - getValue 和 increment 方法是互斥的?
浏览:81日期: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. javascript - iframe 为什么加载网页的时候滚动条这样显示?2. 后端开发 - mysql按时间分段统计的sql语句怎么写好?3. mysql - 在下刚入门sql 关于sql的语法询问4. 初来乍到,相对路径问题,新手求教5. 老师您好!我有一个问题、6. c++ - 如何在python的阻塞的函数中获取变量值7. python3.x - python lxml无法查找第一个tag有链接和没有内容tag的子tag的text?8. javascript - 请问为啥这个不能渲染成功?9. javascript - 根据不同数据显示不同内容10. 哭辽 求大佬解答 控制器的join方法怎么转模型方法
排行榜
