文章详情页
java - getValue 和 increment 方法是互斥的?
浏览:245日期: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 - 在一个a标签内添加了一个单击事件,想在时间里面给这个a标签添加类样式2. Android 高德地图如何实现拖动平移地图时地图上的小图标不动?3. javascript - webpack less文件单独打包出错4. PHP5.5.38.0 Apache2.4.23.0服务崩溃 系统日志php_curl.dll模块报5. python - Push Notification推送服务在手机上测试时候无法收到生产环境的推送6. java - bin目录有什么特殊含义吗?为什么可执行文件都放在bin目录?7. javascript - UglifyJsPlugin打包的时候把css html也压缩了8. Docker for Mac 创建的dnsmasq容器连不上/不工作的问题9. 按照视频操作下载不了laravel框架10. css - 手机qq打开网页无法使用文件上传功能?
排行榜

网公网安备