Adding more Threads to handle different stock quotes could help improve speed, but there will be a limit based on other bottleneck situations (processor, network connection, etc...). So you would have to
test and see. My thought would be to use a variable sized ThreadPool and a Queue with all the stock quotes in it. Each Thread in the Pool takes a stock, processes it, updates the current value, and puts it back at the end of the Queue. You can then quickly compare the number of Threads you need to most efficiently grab the data.
It may be that it just isn't fast enough. It depends on what you are using to get the data. You may think about using a service which provides a Market Data API for gathering the data. You may find it more efficient than whatever method you have now which requires parsing.
As for the display - keep that separate. You could have a SwingTimer which triggers a refresh of the screen. Collect all the stock quotes into a single list and the refresh simply iterates and displays the value. You might also think about using an Observable and have individual prices update when they get modified, rather than a period refresh. Either way, I would have a 'Data Transfer Object' - one for each quote being watched. The JFrame holds a list of all of them but only calls a 'get' method to retrieve values. Meanwhile each parsing task/thread knows about just one of the DTOs and uses a 'set' method to update the value.