Наступний код приводить до того, java.lang.IllegalThreadStateException: Thread already started
коли я вдруге викликав start()
метод у програмі.
updateUI.join();
if (!updateUI.isAlive())
updateUI.start();
Це трапляється вдруге, коли updateUI.start()
називається. Я пройшов через нього кілька разів, і потік викликається і повністю запускається до завершення перед натисканням updateUI.start()
.
Виклик updateUI.run()
дозволяє уникнути помилки, але змушує потік запускатися в потоці інтерфейсу користувача (викличний потік, як згадувалося в інших повідомленнях на SO), що не те, що я хочу.
Чи можна розпочати нитку лише один раз? Якщо так, то що робити, якщо я хочу запустити ланцюжок знову? Цей конкретний потік робить деякий розрахунок у фоновому режимі, якщо я не роблю це в потоці, ніж це робиться в потоці інтерфейсу користувача, і користувачеві надмірно довго чекати.