<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