【发布时间】:2011-06-09 03:47:06
【问题描述】:
我有一个线程正在下载数据,我想等到下载完成后再加载数据。有这样做的标准方法吗?
更多信息:
我有一个从 URL(序列化 POJO)获取数据的下载类。下载是可运行和可观察的。它跟踪下载的字节数和下载大小。我有一个向用户显示进度的进度条。 GUI 观察下载以更新进度条。
下载 POJO 后,我想获取它并转到下一步。每一步都必须等待上一步完成。问题是我想不出一种方法来暂停我的应用程序以等待下载线程。下载完成后,我想调用download.getObject(),它将数据作为对象返回。然后我可以投射它并继续下一次下载。
我有一个帮助类来管理下载的 URL 并进行所有对下载的调用。此调用将调用 getObject 并进行强制转换。 Gui 打电话给helper.getUser()。 helper 启动线程运行,我希望它“知道”它何时完成,以便它可以返回强制转换的对象。
有什么建议/例子吗?我正处于这个设计的初始阶段,所以我愿意改变它。
更新:
我跟随http://download.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html#get 并使用模态阻塞直到线程完成。代码非常混乱,我不喜欢这种方法。我将继续努力寻找一种“干净”的方式来处理下载过程的工作流程。
【问题讨论】:
标签: java multithreading swing download wait