happens-before

        happens-before规则简单易懂,避免java程序员为理解JMM提供的可见性保证而去学习复杂的重排序规则。       

        在JMM(java内存模型)中,一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须要存在happens-before关系。这里提到的两个操作既可以是一个线程之内,也可以是不同线程之间。

  1.  程序顺序原则:一个线程的每个操作,happens-before于该线程中的任意后续操作。
  2. 监视器锁原则:对一个锁的解锁操作,happens-before后续对这个锁的加锁操作。
  3. volatile变量原则:对一个volatile变量的写操作,happens-before后续对这个变量的读操作。
  4. 传递性:如果A happens-before B,B happens-before C,那么A happens-before C。
  5. start()规则:如果线程A执行操作ThreadB.start()(启动线程B),那么线程A的threadB.start()操作happens-before于线程B中任意操作。
  6. 线程终止规则:线程的所有操作都happens-before对此线程的终止检测。可以通过Thread.join()方法结束、Thread.isAlive()的返回值等手段检测到线程已经终止执行。
  7. 线程中断规则:对线程interrupt()方法的调用先行发生于被中断线程的代码检测到中断事件的发生;

 

转载于:https://my.oschina.net/u/4045381/blog/3079397

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值