looks fine to me.
Thanks,
Alexander.
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