java多线程:Happens-before原则

本文深入解析JVM的Happens-Before规则,涵盖单线程、管程锁定、volatile变量、线程启动、线程加入、中断、对象终结及传递性等八项原则,并结合实际编程示例阐述其在多线程编程中的重要性。

概念

JVM 规定的先行发生原则,让一个操作无需控制就能先于另一个操作完成。

八大原则

单一线程原则 Single Thread Role

同一线程内,代码顺序决定执行顺序
单一线程原则

管程锁定原则 Monitor Lock Role

对于同一个锁,解锁(UnLock)总是发生在加锁之前(Lock)
管程锁定原则

volatile变量原则 Volatile Variable Role

对于同一个Volatile变量,写操作总是发生在读操作之前
Volatile变量原则

线程启动原则 Thread Start Role

一个线程的 start()操作,总是发生在这个线程所有动作之前。
线程启动原则

线程加入原则 Thread Join Role

Thread 对象的结束先行发生于 join() 方法返回。
线程加入原则

线程中断原则 Thread Interrupt Role

对线程 interrupt() 方法的调用先行发生于被中断线程的代码检测到中断事件的发生,可以通过 interrupted() 方法检测到是否有中断发生。

对象终结原则 Finalizer Rule

一个对象的初始化操作总是发生在它的finalize方法之前

传递性原则 Transitivity

如果A先于B,B先于C,那么A先于C。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值