`
sunxg
  • 浏览: 13765 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于volatile使用的疑问

阅读更多
读关于jmm的文章 http://www.ibm.com/developerworks/cn/java/j-jtp03304/时,看到里面关于volatile的使用,说在新jmm下下列程序可以保证正确,既保证当thread A完成对volatile变量的写操作时,该赋值操作之前的操作已经完成,疑问:即使这样volatile的变量可以实时同步到主存被thread b看到,但Thread A中该volatile变量赋值操作之前的操作的更改同步到主存中了吗,可以保证他们能被Thread b看到吗?如果是的话,难道对一个变量的volatile限制还可以影响到其他非volatile变量吗?

清单 1. 用一个 volatile 变量作为“守护”
Map configOptions;
char[] configText;
volatile boolean initialized = false;
// In Thread A
configOptions = new HashMap();
configText = readConfigFile(fileName);
processConfigOptions(configText, configOptions);
initialized = true;
// In Thread B
while (!initialized)
  sleep();
// use configOptions
分享到:
评论

相关推荐

    关于Linux下的Nandflash.pdf

    ### 关于Linux下的Nandflash知识点详述 #### 一、Nand Flash基础知识概述 **Nand Flash**是一种非易失性存储技术,被广泛应用于移动设备、固态硬盘和其他电子设备中。与传统的NOR Flash相比,Nand Flash具有更高的...

    AFF A800 - Replacing the boot media.pdf

    对于运行ONTAP 9.5及更早版本的系统,需要检查NVE(Non-Volatile Encryption)或NSE(Non-Volatile System Encryption)。这涉及到验证加密密钥的备份,以便在更换引导媒体后能恢复数据访问。 **检查NVE或NSE** 1....

    Java初学者都应该搞懂的六个问题.pdf

    但并发执行也可能带来数据同步问题,这时需要使用synchronized关键字、volatile变量或Lock接口来保证线程安全。 这些基本概念构成了Java编程的基础,理解并熟练掌握它们对于Java初学者来说至关重要。在实践中不断...

    Netty案例集锦(并发编程篇)有目录

    - **volatile的正确使用**:使用`volatile`关键字来保证变量的可见性和有序性。 - **CAS指令和原子类**:利用`CAS`指令和Java提供的原子类来实现细粒度的并发控制。 - **线程安全类的应用**:利用Java中已经提供的...

    程序员为什么还要刷题-atomique:基于C++11内存模型的.NET的理智原子操作

    程序员常刷题原子 基于 ...话虽如此,如果您在阅读该页面后仍有疑问,您可以简单地使用顺序一致性屏障,并且在 99% 的情况下应该没问题。 你的代码最终会比必要的慢一点,但并不是那么多。 为什么 8

    Java并发程序设计教程.rar

    线程同步是避免数据竞争的关键,Java提供了多种同步机制,如synchronized关键字、volatile变量、java.util.concurrent包中的Lock接口及其实现类如ReentrantLock。 接着,“Java并发程序设计教程.pdf”可能深入讲解...

    java技术论坛

    3. **并发编程**:Java中的线程管理、同步机制(如synchronized、volatile、Lock接口等)、并发容器(如ConcurrentHashMap、CopyOnWriteArrayList等)以及线程池的使用和设计。 4. **框架与库**:Spring框架的应用...

    网易Java程序员两轮面试 请问你能答对几个?

    它可以用来解决变量的可见性问题,例如在单例模式中使用volatile来确保单例对象的唯一性。 2. Minor GC和Full GC的触发时机 Java中的垃圾回收机制分为Minor GC和Full GC。Minor GC是对年轻代的垃圾回收,触发时机...

    java-interview

    如果对你有帮助请点下 Star,有疑问欢迎提 ,有好的想法请提 。 常用集合 ArrayList/Vector LinkedList HashMap HashSet LinkedHashMap Java 多线程 多线程中的常见问题 synchronize 关键字原理 多线程的三大核心 ...

    Java-Interview:此项目为 Java 面试的汇总,多数是一些 Java 基础知识、底层原理、算法详解。也有上层应用设计,其中不乏一些大厂面试真题

    如果对你有帮助请点下 Star,有疑问欢迎提 ,有好的想法请提 。 常用集合 ArrayList/Vector LinkedList HashMap HashSet LinkedHashMap Java 多线程 多线程中的常见问题 synchronize 关键字原理 多线程的三大核心 ...

    Java并发编程实践

    - **volatile关键字**: 用于标记共享变量以确保其可见性和禁止指令重排序,但不能保证原子性操作。 #### 3. **并发工具类** - **Executor框架**: 提供了一种更灵活的方式来管理线程池、任务队列以及线程生命周期,...

    问题解决_​​JAVA

    10. **Java文档**:查阅Java官方文档(Javadoc)了解类库、API的详细用法,解决接口使用上的疑问。 11. **社区资源**:Stack Overflow、GitHub、Oracle技术论坛等社区提供了大量的问题解决方案,善用搜索引擎和社区...

    Java-Interview:https

    如果对你有帮助请点下 Star,有疑问欢迎提 ,有好的想法请提 。 常用集合 HashMap HashSet LinkedHashMap Java 多线程 多线程中的常见问题 synchronize 关键字原理 多线程的三大核心 对锁的一些认知 ReentrantLock ...

    煤炭基础知识学习资料.doc

    煤炭是全球能源体系中的重要组成部分,尤其在中国,煤炭的使用占据着主导地位。这份煤炭基础知识学习资料旨在提升业务人员对煤炭特性和市场的理解,以便更好地服务客户和拓展市场。以下是对文档部分内容的详细解释:...

    32矩阵键盘源代码

    在电子工程和嵌入式系统开发中,矩阵键盘是一种常见的用户输入设备,尤其适用于资源有限的微控制器项目。...如果你对矩阵键盘的使用还有疑问或需要进一步了解,请参考提供的源代码进行学习和研究。

    汪文君高并发编程实战视频资源全集

     高并发编程第三阶段29讲 关于Condition疑问的几个小实验,对比Wait&Notify_.mp4  高并发编程第三阶段30讲 使用Condition实现一个多线程下的Producer-Consumer_.mp4  高并发编程第三阶段31讲 JDK8-...

    汪文君高并发编程实战视频资源下载.txt

     高并发编程第三阶段29讲 关于Condition疑问的几个小实验,对比Wait&Notify_.mp4  高并发编程第三阶段30讲 使用Condition实现一个多线程下的Producer-Consumer_.mp4  高并发编程第三阶段31讲 JDK8-...

    【并发编程】 — 伪共享(False Sharing)底层原理及其解决方式

    1.2 缓存行的概念1.3 伪共享(False Sharing)的概念 + 其可能引发的性能问题2 如何避免伪共享 — 数据填充2.1 不使用数据填充时的效率验证2.2 手动进行数据填充的效率验证2.3 通过java8新特性@sun.misc.Contended...

    ao-concurrent:并发编程实用程序

    - **并发控制**:Java提供了多种并发控制机制,如`synchronized`关键字、`volatile`变量、`java.util.concurrent`包中的锁和同步工具类。 2. **Java并发API** - **ExecutorService**:管理线程池,提供线程的创建...

Global site tag (gtag.js) - Google Analytics