文章详情页
java - getValue 和 increment 方法是互斥的?
浏览:127日期: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. docker gitlab 如何git clone?2. dockerfile - [docker build image失败- npm install]3. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?4. docker不显示端口映射呢?5. docker-compose 为何找不到配置文件?6. docker内创建jenkins访问另一个容器下的服务器问题7. python django工程上传一张照片调用python方法时报错,请问如何处理?8. python - 在pyqt中做微信的机器人,要在表格中显示微信好友的名字,却显示不出来,怎么解决?9. docker 17.03 怎么配置 registry mirror ?10. docker 下面创建的IMAGE 他们的 ID 一样?这个是怎么回事????
排行榜
