<Swing Dev> [10] Review Request: 5031664 Increase thread safety of EventListenerList

Alexander Zvegintsev alexander.zvegintsev at oracle.com
Fri Nov 10 05:08:34 UTC 2017

looks fine to me.



On 10/27/2017 04:48 AM, Sergey Bylokhov wrote:
> Hello,
> Please review the fix for jdk10.
> The EventListenerList class was implemented to be thread safe. To 
> achieve the correct state of the object:
>  - two mutators(add/remove) were marked as synchronized.
>  - the internal array is updated via copy-on-write, the internal array 
> is never modified after it was set.
> It was assumed that the getXXX methods will get the value which was 
> already set by the mutator or the previous value if mutator is 
> in-progress but was not update the array. The problem is that the 
> getXXX is not necessary read the value which was set, because of lack 
> of happens-before between add/remove and getXXX. In the fix the array 
> was marked as volatile to solve the problem.
> The CSR will be created after the technical review (the field is 
> protected in public class)
> Bug: https://bugs.openjdk.java.net/browse/JDK-5031664
> Webrev can be found at: 
> http://cr.openjdk.java.net/~serb/5031664/webrev.00

More information about the swing-dev mailing list