Chiama t.start()
per iniziare un nuovo Thread
, chiamando Thread#run
non fa altro che chiama run
metodo del Thread
nello stesso contesto del thread...
Detto questo, Swing non è thread-safe, Swing richiede che tutti gli aggiornamenti all'interfaccia utente vengano effettuati nel contesto del thread di distribuzione degli eventi. Invece di usare un Thread
, dovresti prendere in considerazione l'utilizzo di un SwingWorker
, che ti consente di eseguire attività di lunga durata in un thread in background, ma che fornisce publish
di facile utilizzo /process
metodi e chiamate done
al termine, che vengono eseguiti nel contesto dell'EDT per te.
Vedi Worker Threads e SwingWorker per maggiori dettagli