Следующий код приводит к тому, java.lang.IllegalThreadStateException: Thread already startedчто я вызвал start()метод второй раз в программе.
updateUI.join();
if (!updateUI.isAlive())
updateUI.start();
Такое бывает во второй раз updateUI.start()называется. Я прошел через это несколько раз, и поток вызывается и полностью выполняется до завершения, прежде чем попасть updateUI.start().
Вызов updateUI.run()позволяет избежать ошибки, но заставляет поток запускаться в потоке пользовательского интерфейса (вызывающем потоке, как упоминалось в других сообщениях на SO), чего я не хочу.
Можно ли запустить поток только один раз? Если да, то что мне делать, если я хочу снова запустить поток? Этот конкретный поток выполняет некоторые вычисления в фоновом режиме, если я не делаю этого в потоке, чем это делается в потоке пользовательского интерфейса, и у пользователя неоправданно долгое ожидание.