JavaFX应用程序线程如何工作?

ulz*_*han 5 multithreading javafx thread-sleep

我有Java FX应用程序线程的问题.这是一个伪代码:

showMenu();
//Contoller which waits for action(pressing button)...
showLoadingPic();
Thread.sleep(2000);
showMap();
Run Code Online (Sandbox Code Playgroud)

问题是睡眠发生在showMenu()中显示的窗口中,showLoadingPic()根本没有显示,并且在showMap()的结束窗口中显示.

showLoadingPic中的场景有一个进度条,运行2秒,与Thread.sleep(2000)同时运行.

所以似乎javafx应用程序线程块showLoadingPic()和showLoadingPic()在后台运行.

有人可以帮我解决这个问题吗?

先感谢您!

Gui*_*sel 12

有一个Java FX事件调度线程,它处理所有与GUI相关的任务.您必须更新此线程中的所有UI组件.长时间运行的任务,例如Thread.sleep永远不应该在这个线程中执行,因为Windows将挂起,GUI将被冻结.

在应用程序主线程中执行所有代码,并通过调用在JavaFX线程中仅执行GUI任务Platform.runLater.

有关此主题的参考资料: