作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我使用 ExecutorService
执行了 Callable
对象。
如何从此可调用函数返回中间结果?
我知道 Swing 有 javax.swing.SwingWorker#publish(results)
但我不使用 Swing。
最佳答案
有几种方法可以做到这一点。您可以通过回调来完成,也可以通过队列来完成。
下面是一个使用回调执行此操作的示例:
public static interface Callback<T> {
public void on(T event);
}
然后,回调的实现对正在进行的事件执行某些操作:
final Callback<String> callback = new Callback<String>() {
public void on(String event) {
System.out.println(event);
}
};
现在您可以在池中使用回调:
Future<String> submit = pool.submit(new Callable<String>() {
public String call() throws Exception {
for(int i = 0; i < 10; i++) {
callback.on("process " + i);
}
return "done";
}
});
关于java - 如何从 Callable 返回中期结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8947738/
我是一名优秀的程序员,十分优秀!