The client reader thread takes msgs off the reader queue and calls the appropriate message handler. In the simple GUI, the message handler simply updates a JTextArea from the message payload.
in fact I suspect you'll be far more of an expert than I am in most of this
I'm going to assume they are written in Swing.
I'm especially unaware if Swing is very good at say using multiple threads to update multiple rows in a table, that sort of thing.
Further down the line you can ask Swing Q's directly in our Swing forum
Using the very latest version of the JDK/JRE is a good idea
Decouple the MessageHandler(s) from the GUI if you haven't done so already
I'd normally prescribe a healthy dose of JMS
As you say with the new complex GUI you can no longer have the simple MessageHandler model. I can only suggest something like (same as before really)
I _think_ an important concept you might have to introduce is a Admin or Thread Manager interface
I think there are some 3rd party APIs for that sort of thing, JFreeChart is one to look into..