【发布时间】:2017-11-07 23:28:44
【问题描述】:
我目前正在创建一个带有使用 Java FX 创建的 UI 的 Java 应用程序。我的应用程序界面分为三个单独的选项卡。在第一个选项卡上,我有很多用于启动其他应用程序的按钮。我的目标是让用户按特定顺序启动这些应用程序,因此后续按钮被禁用,直到前一个应用程序的进程完成,然后它们才被启用。我已经通过使用这些行来实现这一点
Process p = Runtime.getRuntime().exec(application);
p.waitFor();
然后控制器启用界面中的下一步按钮。我的问题是在启动的应用程序运行时出现的。由于我的应用程序正在等待进程结束,任务管理器将我的 Java 应用程序显示为没有响应,并且您无法导航到其他选项卡。当然,当启动的应用程序完成后,我的应用程序就可以正常运行了。
我认为这是由于主线程在等待进程完成时被阻塞。最好的解决方案是在单独的线程上运行此进程,以便应用程序的其余部分在等待启动的进程完成时可用?
【问题讨论】:
-
是的。最好将您的 UI 与长时间运行的操作保持在单独的线程中。
标签: java multithreading javafx