Happens-Before 规则总结

📅 发布时间:2026/7/28 19:40:11
Happens-Before 规则总结 在并发编程中Happens-Before 规则是相当重要的规则它所代表的意思是前面一个操作对后续操作是可见的共有6项规则如下程序的顺序性规则volatile 变量规则传递性管程中锁的规则线程 start() 规则线程 join() 规则分别对以上6种规则进行解释1.程序的顺序性规则程序的顺序性指的是代码会按照书写的顺序去执行也就是单线程方式。2.volatile 变量规则对一个 volatile 变量的写操作 Happens-Before 于后续对这个 volatile的读操作。理解如果两个线程对共有变量进行操作前一个线程对变量的写操作对后续另一个变量的读操作是可见的。3.传递性如果 A Happens-Before B且 B Happens-Before C那么 A Happens-Before C。这需要举个例子传递性结合1和2进行说明首先一个线程有2个变量其中第一句话是赋值语句然后两个线程通过volatile关联起来然后另一个线程能读到第一个线程中的变量。4 管程中锁的规则对一个锁的解锁 Happens-Before 后续对这个锁的加锁.管程是什么意思synchronizedsynchronized 是管程的实现编译器实现了同步代码块的加锁和解锁操作。5 .线程 start() 规则主线程 A 启动子线程 B 后子线程 B 能够看到主线程在启动子线程 B 前的操作。6.线程 join() 规则关于线程等待的。它是指主线程 A 等待子线程 B 完成主线程 A 通过调用子线程 B 的 join() 方法实现当子线程 B 完成后主线程 A 中 join() 方法主线程能够看到 子线程的操作。