1. 首页
  2. 编程语言
  3. Java
  4. Java利用happen-before规则如何实现共享变量的同步操作详解

Java利用happen-before规则如何实现共享变量的同步操作详解

上传者: 2021-05-31 15:23:45上传 PDF文件 213.55 KB 热度 12次

熟悉 Java 并发编程的都知道,JMM 中的 happen-before规则,该规则定义了 Java 多线程操作的有序性和可见性,防止了编译器重排序对程序结果的影响。Java语言中有一个“先行发生”的规则,它是Java内存模型中定义的两项操作之间的偏序关系,如果操作A先行发生于操作B,其意思就是说,在发生操作B之前,操作A产生的影响都能被操作B观察到,“影响”包括修改了内存中共享变量的值、发送了消息、调用了方法等,它与时间上的先后发生基本没有太大关系。这个原则特别重要,它是判断数据是否存在竞争、线程是否安全的主要依据。当一个变量被多个线程读取并且至少被一个线程写入时,如果读操作和写操作没有 HB 关系,则会产生数据竞争问题。

下载地址
用户评论