【发布时间】:2014-12-17 14:50:51
【问题描述】:
我正在制作一个 JavaFX 应用程序,在该应用程序中读取问题并在按下开始按钮时生成解决方案。问题是当我单击开始按钮时,GUI 挂起。我查看了this post,它建议将线程安全方法包装在 Platform.Runlater 中。
现在,当单击按钮时,将调用我的控制器中的方法 doBtnStartPressed()。此方法仅包含对 showSolution() 方法的调用。然后我把这个方法的内容封装在Platform.runLater中如下:
private void showSolution() {
Platform.runLater(new Runnable() {
public void run() {
// solve problem
// draw solution on panes (rectangles which represent time windows)
}
});
}
但这不起作用。
【问题讨论】:
-
您引用的帖子(正确)说“使用
PlatForm.RunLater进行快速简单的操作,使用Task进行复杂和大型操作”。您将需要并发框架(Task甚至更多)。有关介绍,请参阅here。 -
谢谢,我还尝试将 showSolution() 方法的内容包装在 Task 中,然后调用 new Thread(task).start();但是,这不会引发任何异常,但不会在窗格上绘制任何内容。我确定任务正在启动。
标签: java multithreading concurrency javafx