mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8067377: My hobby: caning, then then canning, the the can-can
Fix ALL the stutters! Reviewed-by: rriggs, mchung, lancea
This commit is contained in:
parent
b13527e322
commit
08eb67b941
242 changed files with 332 additions and 334 deletions
|
@ -162,7 +162,7 @@ public abstract class ClassValue<T> {
|
|||
* observe the time-dependent states as it computes {@code V1}, etc.
|
||||
* This does not remove the threat of a stale value, since there is a window of time
|
||||
* between the return of {@code computeValue} in {@code T} and the installation
|
||||
* of the the new value. No user synchronization is possible during this time.
|
||||
* of the new value. No user synchronization is possible during this time.
|
||||
*
|
||||
* @param type the type whose class value must be removed
|
||||
* @throws NullPointerException if the argument is null
|
||||
|
@ -285,7 +285,7 @@ public abstract class ClassValue<T> {
|
|||
* will receive the notification without delay.
|
||||
* <p>
|
||||
* If version were not volatile, one thread T1 could persistently hold onto
|
||||
* a stale value this.value == V1, while while another thread T2 advances
|
||||
* a stale value this.value == V1, while another thread T2 advances
|
||||
* (under a lock) to this.value == V2. This will typically be harmless,
|
||||
* but if T1 and T2 interact causally via some other channel, such that
|
||||
* T1's further actions are constrained (in the JMM) to happen after
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue