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.