从Swing 中的并发开始。
绝对最简单的方法可能是使用SwingWorker
具有需要查找的项目列表并允许它处理列表的项目。
这样做的问题是它只会一个接一个地运行每个请求,使其比其他选项慢一点。这样做的好处是它提供了与事件调度线程重新同步的简单功能,以便您可以通知 UI 或安全地对其进行更改。
另一种选择可能是使用Executors,特别是线程池实现。
这允许您提交许多应该在将来某个时间执行的任务,但允许您控制进程在任何时候可以使用的线程数。
缺点是当您想更新 UI 时,您需要自己负责将更改同步回 UI,使用SwingUtilities.invokeLater
现在。您“可以”同时使用两者。
基本上,您需要设置某种“请求”类,允许您将相关信息传递给,例如,“母亲”和“父亲”服务器、原始图像以及可能会告诉的某种回调接口当最终图像被渲染时。
请求者将构建某种Runnable
或Callable
包装一个SwingWorker
.
当执行时,这个“请求任务”将启动SwingWorker
,允许它获取图像,合并它们和publish
结果,这将通知回调接口。然后,“请求任务”将简单地等到SwingWorker#get
返回后再退出。
作为一个想法...