我有一个需要一段时间的功能,并且想要显示等待屏幕:
Loading.showSplash("Working...");
for (FileListRow row : model.getList()) {
performAction(row);
}
Loading.hideSplash();
问题是performAction(row);似乎是在加载屏幕之前执行的,因此它达不到目的。
有关解决此问题的任何帮助,以强制等待屏幕在执行其余部分之前显示,并强制该功能在等待屏幕消失之前完成。
最佳答案
我可以假设这是一个 Swing 程序吗?
如果是,那么您似乎正在事件调度线程上执行长时间运行的操作。这是一个坏主意;您应该在工作线程上执行所有长时间运行的操作。请参阅Java tutorial了解更多信息。
如果您确实在后台线程上执行长时间运行的操作,那么您肯定不想使用信号量来挂起 GUI 线程,直到这些操作完成,甚至直到它们开始。应允许 GUI 线程自由运行并分派(dispatch)事件,否则您的 UI 将出现“滞后”,这会让用户感到烦恼。正如其他发帖者所指出的,您的工作线程可以使用 SwingUtilities.invokeLater()
来更新 UI。
关于java - 如何在Java中使用信号量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4658644/