我有一个长时间运行的任务,正在 ExecutorService 线程池的后台执行。就该任务返回进度或中间结果而言,有哪些最佳实践?有没有提供此功能的库?
编辑:为了澄清,我正在谈论向其他代码报告进度,而不是向用户报告进度。
通常我会使用 SwingWorker,但我正在使用 Grails 应用程序的 Java/Groovy 后端,并且我不确定它在无头服务器环境中的表现如何,因为它具有 EDT 关系。
另一个例子是 Eclipse RCP 中的 Jobs 框架,但我需要一些与 UI 无关的东西。
嘿,您可以尝试实现观察者模式,并让感兴趣的各方订阅工作线程(java.util.Observable 或类似的扩展)或管理观察者的另一个类。
您可以使用 java.util.Observer 和 java.util.Observable
或者自己动手。
实现观察者模式的一些接口的简单示例:
public interface ObservableSubject<T extends SubjectObserver, V> {
void registerObserver(T observer);
void removeObserver(T observer);
void notifyObservers(V notificationPayload);
}
public interface SubjectObserver<T> {
void handleNotification(T notificationPayload);
}
更多信息:维基百科上的观察者模式 http://en.wikipedia.org/wiki/Observer_pattern
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)