<AWT Dev> [8] Review request for 7186109: Simplify lock machinery for PostEventQueue & EventQueue
Anthony Petrov
anthony.petrov at oracle.com
Mon Sep 10 07:50:47 PDT 2012
On 09/10/12 15:27, Artem Ananiev wrote:
>> ** This is safe because a thread only ever writes its own value to
>> flushThread so even if it reads a stale value that value will either be
>> null or some other thread - either way it is not the current thread so
>> it proceeds with the main logic.
>
> The "flushThread" field is not volatile, so we can't check its value
> outside of synchronized blocks.
In this particular case you can do that, and in the above quote David
explains why.
In other words: you only want to check whether the flushThread refers to
the current thread or not. If it's been actually set by the current
thread, then this thread must see the correct value w/o any
synchronization needed. Otherwise, (if it's null or set by another
thread,) your code will see a value that doesn't refer to the current
thread, and this is exactly what you wanted to check.
So I agree with David, this test needs no synchronization.
--
best regards,
Anthony
More information about the awt-dev
mailing list