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

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Thu Oct 26 23:18:22 UTC 2017


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


-- 
Best regards, Sergey.



More information about the swing-dev mailing list