Java Reference
In-Depth Information
Synchronization actions induce the synchronized-with relation on actions, defined as fol-
lows:
• An unlock action on monitor m synchronizes-with all subsequent lock actions on m
(where “subsequent” is defined according to the synchronization order).
• A write to a volatile variable v 8.3.1.4 ) synchronizes-with all subsequent reads of
v by any thread (where “subsequent” is defined according to the synchronization
order).
• An action that starts a thread synchronizes-with the first action in the thread it
starts.
• The write of the default value (zero, false , or null ) to each variable synchronizes-
with the first action in every thread.
Although it may seem a little strange to write a default value to a variable be-
fore the object containing the variable is allocated, conceptually every object
is created at the start of the program with its default initialized values.
• The final action in a thread T1 synchronizes-with any action in another thread T2
that detects that T1 has terminated.
T2 may accomplish this by calling T1 .isAlive() or T1 .join() .
• If thread T1 interrupts thread T2 , the interrupt by T1 synchronizes-with any point
where any other thread (including T2 ) determines that T2 has been interrupted (by
having an InterruptedException thrown or by invoking Thread.interrupted or
Thread.isInterrupted ).
The source of a synchronizes-with edge is called a release , and the destination is called an
acquire .
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) .
Search WWH ::




Custom Search