Use javax.swing.SwingWorker