-
单线程原则
在一个线程之内,后面的语句能够知道前面的代码做了什么。 -
锁操作(synchronized和Lock)
一个线程加锁之后能够看到另一个线程解锁之前的所有操作 -
volatile变量
对一个变量的写操作先行发生于后面对这个变量的读操作 -
线程启动
子线程启动,启动之前的操作的结果对子线程都是可见的 -
线程join
主线程在等待某些线程的结果,所以join后面的语句能够看到join之前所有语句的运行结果 -
传递性
如果操作A先行发生于操作B,而操作B先行发生于操作C,则操作A也是先行发生于操作C的 -
中断
如果一个线程被其他线程中断,那么对这个线程interrupt()方法的调用会先行发生于被中断线程的代码检测到中断事件的发生 -
对象终结规则
一个对象的初始化的最后一行指令先行发生于它的finalize()方法的第一行指令 -
工具类的Happens-Before原则
有些工具类也是有Happens-Before原则的,比如CountDownLatch和CyclicBarrier等
Happens-Before规则有哪些?
猜你喜欢
转载自blog.csdn.net/weixin_38106322/article/details/104625582
今日推荐
周排行