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