Нет смысла начинать другой поток, если все, что вы собираетесь сделать после этого, - заставить текущий поток дождаться завершения другого.Вы также можете просто запустить алгоритм в потоке, который у вас уже есть;в любом случае, вы не будете переходить к updateInterface()
до тех пор, пока алгоритм не будет завершен.
Как уже отмечали другие, после завершения работы алгоритма и обновления пользовательского интерфейса вы только ждете 60 миллисекунд, прежде чем запуститьалгоритм снова.Похоже, ваша программа тратит большую часть своего времени на выполнение алгоритма.Это нормально, если вам нужно это для быстрого обновления экрана, но в противном случае вы можете использовать более длительную задержку.
Кроме того, вы запускаете новый поток каждый раз в цикле.Этот поток запускает алгоритм один раз и затем завершается, или он запускает алгоритм в цикле?Если у вас есть циклы, запускающие потоки, каждый из которых является длительным циклом, интенсивно использующим процессор, вы можете случайно запустить много копий алгоритма одновременно.Если вы ожидаете, что поток алгоритма прекратит работу после того, как он вас проинформирует, вы должны join()
проверить это.