Java多线程 happens-before原则

文章目录

happens-before概念

happens-before 的两种解释:

  1. happens-before 规则是用来解决可见性问题的, 在时间上, 动作A发生动作B之前, B保证一定能看到A, 这就是happens-before
  2. 两个操作可以用happens-before 来确定执行顺序: 如果第一个操作happens-before于另外一个操作(即线程1先于线程2执行), 那么就可以说第一个操作相对于第二个操作是可见的(即线程2可以感知到线程1改变的变量值. ).

什么不是happens-before
两个线程没有相互配合的机制, 所以线程1和线程2的执行结果并不能保证总被对方看得到 , 这就不具备happens-before

例如如下的可见性demo文章中, 给变量加上了volatile, 那么就是符合happens-before 原则的. 即修改了a和b的值, 另外一个线程是看得到的. 如果没有加上volatile , 就不符合volatile原则.
https://javaweixin6.blog.csdn.net/article/details/108419450

猜你喜欢

转载自blog.csdn.net/qq_33229669/article/details/108422677