Ivanov, Alexey A wrote:
> I think synchronized block can be safely removed.
> Any way Swing is not thread-safe, and these methods are not explicitly
> marked as thread-safe.
This is a static mutable variables [bad]. In an environment where there
are multiple 'AppContexts', such as Applets, it may be accessed by
multiple threads.
>> From: Mikhail Loenko [mailto:mloenko@gmail.com]
>>
>> javax.swing.Timer
>>
>> this is an attomic operation, why synchronized?
That is not a valid argument.
One issue is that the change would not necessarily visible to other
threads if not synchronized/volatile. Secondly, if there are other
non-atomic operation using synchronized, then these may fail. However,
in this case volatile looks fine, and no-one would really notice if even
that was not present.
>> public static void setLogTimers(final boolean isLogTimers) {
>> synchronized (Timer.class) {
>> Timer.isLogTimers = isLogTimers;
>> }
>> }
Tom Hawtin
|