【Java多线程】Volatile常见题目
围绕“volatile”的高频考题及详细解答一、计算机编程领域(高频考点:Java/C/C++并发/编译优化)(一)选择题在Java中,volatile关键字不能保证变量操作的哪个特性?( )A. 可见性 B. 有序性 C. 原子性 D. 禁止指令重排序答案:C解析:Java的volatile核心保证2个特性:①可见性(一个线程修改volatile变量后,其他线程能立即看到最新值,原理是变量修改后强制刷回主存,其他线程读取时跳过CPU缓存直接读主存);②有序性(通过“内存屏障”禁止编译器和CPU对volatile变量相关指令重排序,如禁止“volatile写”后排序“普通读”)。它不保证原子性:例如volatile int i = 0;,多线程执行i++时,仍会出现并发问题(i++拆分为“读值→加1→写回”3步,volatile无法保证这3步整体原子性,需配合synchronized或AtomicInteger)。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2442347.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!