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