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

时间:2013-11-03 16:14:43

标签: multithreading javafx thread-sleep

我遇到了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 个答案:

答案 0 :(得分:10)

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

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

有关此主题的参考资料: