Вопрос по thread-sleep, javafx, multithreading – Как работает поток приложения JavaFX?

5

У меня проблема с потоком приложений Java FX. Вот псевдокод:

showMenu();
//Contoller which waits for action(pressing button)...
showLoadingPic();
Thread.sleep(2000);
showMap();

Проблема в том, что спящий режим происходит в окне, которое отображается в showMenu (), showLoadingPic () вообще не отображается, а в конце отображается окно в showMap ().

Сцена в showLoadingPic имеет индикатор выполнения, который выполняется 2 секунды, что совпадает с Thread.sleep (2000).

Поэтому кажется, что блоки потоков приложений javafx showLoadingPic () и showLoadingPic () выполняются в фоновом режиме.

Может кто-нибудь помочь мне исправить это ??

Заранее спасибо!

Ваш Ответ

1   ответ
10

который обрабатывает все задачи, связанные с GUI. Вы должны обновить все компоненты пользовательского интерфейса в этой теме. Долгосрочные задачи, такие какThread.sleep никогда не должен выполняться в этом потоке, так как окна будут зависать, и графический интерфейс будетзамороженный.

Выполните весь ваш код в главном потоке приложения и выполняйте только задачи с графическим интерфейсом в потоке JavaFX, вызываяPlatform.runLater.

Ссылки на эту тему:

Параллелизм в JavaFXот OracleСхожий вопрос

Похожие вопросы