文章详情页
java - getValue 和 increment 方法是互斥的?
浏览:118日期: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. 哪位大神知道MySql怎么修改多行多列的数据?求指点2. 这是什么情况???3. 编辑管理员信息时,为什么没有修改过的内容会为空?4. phpadmin的数据库,可以设置自动变化时间的变量吗?就是不需要接收时间数据,自动变化5. mysql - thinkphp5 在MAC电脑本地正常,部署LINUX服务器之后,模型不存在6. 老哥们求助啊7. javascript - 百度图片切换图片时url会改变,但无刷新,没用hash,IE8也支持,请问是用了什么技术?8. PHP类封装的插入数据,总是插入不成功,返回false;9. APP上传到电脑服务器,出现数据上传不完整的问题10. 求救一下,用新版的phpstudy,数据库过段时间会消失是什么情况?
排行榜
