Executor服务中的java不确定任务
我有以下变量:
private ExecutorService executor;
private Task<Boolean> worker;
我有一个任务应该在另一个线程中执行,并且应该监视其状态:
public Worker<Boolean> updateTemplateBuffer() {
worker = new Task<Boolean>() {
@Override
protected Boolean call() throws Exception {
//task code
};
executor.execute(worker);
return worker;
}
任务执行正确,但我无法跟踪任务是否已结束
方法executor.isTerminated()
和executor.isShutdown()
总是在调用的任何时候false
。
告诉我如何正确跟踪任务的状态(已启动或已完成),因为我以前从未遇到过多线程编程
# 1 楼答案
在任务类中实现可调用接口。并将任务传递给Executor Service。提交(任务);它将返回一个未来的实例。给未来打电话。get(),它将等待调用块完成执行
# 2 楼答案
^{} 实现^{} 接口,该接口具有^{} 属性。当^{} 变为
SUCCEEDED
、CANCELLED
或FAILED
时,您可以监听此属性并做出反应或者你可以听听^{} 属性
你也可以在^{上收听^{}
还有受保护的“状态方法”
所有这些选项都将在JavaFX应用程序线程上通知您