最佳答案
我有一个线程下载数据,我想等待,直到下载完成之前,我加载的数据。有什么标准的方法吗?
更多信息:
我有一个下载类,它从 URL (序列化 POJO)获取数据。下载是可运行和可观察的。它跟踪下载的字节和下载大小。我有一个进度条,显示用户的进度。GUI 观察下载以更新进度条。
当下载 POJO 时,我希望获得它并进入下一步。每一步都要等到前一步完成。问题是我想不出一种方法来暂停我的应用程序,等待下载线程。一旦下载完成,我想调用 download.getObject()
,它将返回的数据作为一个对象。然后我就可以施放它,并继续下一个下载。
我有一个 helper 类,它管理要下载的 URL,并调用所有要下载的 URL。这个调用将调用 getObject 并执行强制转换。鬼叫 helper.getUser()
。助手启动线程运行,我希望它知道什么时候结束,这样它就可以返回强制转换的对象。
有什么建议或例子吗? 我在这个设计的初期阶段,所以我愿意改变它。
更新:
我遵循 http://download.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html#get,并使用模态来阻塞,直到线程完成。代码非常混乱,我不喜欢这种方法。我将继续尝试找到一种“干净”的方式来处理下载过程的工作流程。