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

Andrej Golovnin andrej.golovnin at gmail.com
Fri Nov 10 07:04:29 UTC 2017


Hi Sergey,

the order of modifiers is wrong. It should be "protected transient
volatile". See http://cr.openjdk.java.net/~alundblad/styleguide/index-v6.html#toc-modifiers
for details.

Best regards,
Andrej Golovnin

On Fri, Oct 27, 2017 at 1:18 AM, Sergey Bylokhov
<Sergey.Bylokhov at oracle.com> 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
>
>
> --
> Best regards, Sergey.



More information about the swing-dev mailing list