All*_*lan 5 java swing multithreading
我有一个Java应用程序从我们的服务器下载信息(实体).我使用下载线程下载数据.
下载过程的流程如下:
下载发生在一个线程中,因此GUI不会"冻结".它还允许我更新进度条.
我需要帮助来管理这个过程.主要问题是当我下载实体数据时,我必须找到一种方法来等待线程完成,然后再尝试获取实体并转到应用程序流程中的下一步.
到目前为止,我已经使用模态对话框来控制流量.我启动线程,弹出一个模态,然后在线程完成时处理模态.模态/线程是Observer/Observable,线程在完成并对话框处理后更改了一个集合.显示模式有效地停止了应用程序的流程,因此它可以等待下载完成.
我还尝试将所有工作流程移至Observers.该过程中的所有相关GUI都是Observers.每个更新方法等待下载完成,然后调用下一个自己下载的GUI.
到目前为止,我发现这两种方法产生的代码难以理解.我想"集中"这个工作流程,以便其他开发人员在试图遵循它时不会拔掉头发.
我的问题是:您是否有任何建议/示例可以以产生易于遵循的代码的方式管理此类工作流程?
我知道'easy'是一个相对的术语,我知道我的两个选项已经有效,但我想从其他程序员那里得到一些想法,而我还有时间改变它.
非常感谢你.
我认为在最新版本的 Java 中执行此操作的最常见方法是使用 SwingWorker:
http://download.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html
它允许您启动后台任务,并为您提供一个在 Swing EDT 上执行的方便的 done() 方法。
| 归档时间: |
|
| 查看次数: |
615 次 |
| 最近记录: |