Happens-before order

17.4.5 Happens-before Order

Two actions can be ordered by a happens-before relationship. If one action happens-before another, then the first is visible to and ordered before the second.

If we have two actions x and y , we write hb (x , y ) to indicate that x happens-before y .

 

  • If x and y are actions of the same thread and x comes before y in program order, then hb (x , y ).
  • There is a happens-before edge from the end of a constructor of an object to the start of a finalizer (§12.6) for that object.
  • If an action x synchronizes-with a following action y , then we also have hb (x , y ).
  • If hb (x , y ) and hb (y , z ), then hb (x , z ).

It should be noted that the presence of a happens-before relationship between two actions does not necessarily imply that they have to take place in that order in an implementation. If the reordering produces results consistent with a legal execution, it is not illegal.

 

最后是说有happens-before关系的两个action在实现中未必会按照那样发生,因为之前可能还存在合法的变序操作

 

http://java.sun.com/docs/books/jls/third_edition/html/memory.html

你可能感兴趣的:(thread,html,sun)