I know the Swing single-thread rule (from Java Concurrency in Practice):
Swing components and models should be created, modified, and queried only from the event-dispatching thread.
Is the converse also true? I maintain some transaction logging code that writes event information to a file and it sometimes does this on the EDT. Is this a bad practice?