文章详情页
java - getValue 和 increment 方法是互斥的?
浏览:163日期: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. 前端 - 提问关于background-image不显示的问题2. javascript - 在top.jsp点击退出按钮后,right.jsp进行页面跳转,跳转到login.jsp3. javascript - 如何在外部点击,跳转到网页后,显示指定的模块。4. 使用未定义的常量user_id-假定为“user_id”5. mysql sql where id in(25,12,87) 结果集如何用按照 25 12 87排序?6. atom开始输入!然后按tab只有空格出现没有html格式出现7. mysql - 记录开始时间和结束时间,表字段类型用timestamp还是datetime?8. python - Flask 脚本,运行一段时间后无响应9. 网页爬虫 - Python爬虫入门知识10. 看不懂你这一步的操作
排行榜

网公网安备