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



Reply via email to