Il codice seguente porta a java.lang.IllegalThreadStateException: Thread already startedquando ho chiamato il start()metodo la seconda volta nel programma.
updateUI.join();
if (!updateUI.isAlive())
updateUI.start();
Questo accade la seconda volta che updateUI.start()viene chiamato. L'ho eseguito più volte e il thread viene chiamato e viene eseguito completamente fino al completamento prima di premere updateUI.start().
La chiamata updateUI.run()evita l'errore ma fa sì che il thread venga eseguito nel thread dell'interfaccia utente (il thread chiamante, come menzionato in altri post su SO), che non è quello che voglio.
Un thread può essere avviato solo una volta? In tal caso, cosa devo fare se voglio eseguire di nuovo il thread? Questo particolare thread sta eseguendo alcuni calcoli in background, se non lo faccio nel thread di quanto non sia stato fatto nel thread dell'interfaccia utente e l'utente ha un'attesa irragionevolmente lunga.