Originariamente inviato da cozza.89
Dici che dovrei fare una cosa del genere
No affatto. Tutta quella sequenza la stai facendo dentro Repaint(), nel contesto del thread che l'ha invocato (e ripeto che se è il EDT è sbagliato concettualmente). È il run() nel MyThread che deve avere tutta quella sequenza di sleep, impostazioni ecc.... Perché tutta l'intera sequenza deve "girare" separatamente dal EDT.

E ripeto ancora le questioni legate alla thread-safety: repaint() è thread-safe. n1, n2, .... sono usate sia nel contesto del EDT (lette nel paintComponent) e saranno usate nel tuo thread separato (scritte nel run()). Questo non è "safe" ma più che altro per una questione di "visibilità" che non è garantità. Se vuoi fare le cose bene, almeno dichiara quelle variabili come private volatile int n1,n2,........ Con il volatile la "visibilità" è garantita.