Joseph Bowbeer wrote:
> Tom Hawtin writes:
> 
>>Only this afternoon I spotted crimes committed on
>>javax.swing.text.html.HTMLEditorKit.defaultStyles and defaultParser.
> 
> Swing is a single-threaded subsystem and therefore should be mostly immune -
> except at the boundaries, where it interacts with the multi-threaded world,
> and in javax.swing.text.AbstractDocument, where it explicitly admits
> asynchronous changes.  [Aside: I'd give worlds to know just how the
> notifications from these changes are communicated to the rest of the
> single-threaded subsystem in a thread-safe way -- without first relaying
> these notifications to Swing's input-event thread.]
> 
> When you say that accesses to the static, non-volatile defaultStyles and
> defaultParser are not correctly synchronized, I assume you've concluded that
> these accesses can result from asynchronous changes to the underlying
> AbstractDocument. (right?)
Components (and friends) that have been shown should only be accessed 
from the AWT Event Dispatch Thread (including the initial show, which 
most programs and examples get wrong (and 1.5 seems to tickle these bugs 
more easily)). However, it is common practice to prebuild the GUI 
outside of the AWT thread to help make the application more responsive. 
In particular if you are using HTMLEditorKey you are probably at least 
loading from a file if not downloading across the internet. So, unless 
you want your application to be as responsive as Mozilla/Netscape at 
least some of the work should be done in a different thread.
But then the whole text.html handling of downloading referenced image 
and stylesheets and submitting forms is less than pleasant.
Tom Hawtin
-------------------------------
JavaMemoryModel mailing list - http://www.cs.umd.edu/~pugh/java/memoryModel
This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:00:59 EDT