【发布时间】:2019-01-17 06:35:01
【问题描述】:
我有以下变量:
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 在任何时候调用。
告诉我如何正确跟踪任务的状态(开始或完成),因为我之前从未遇到过多线程编程。
【问题讨论】:
-
executor.isTerminated / isShutdown 适用于执行者而不是您的任务 --> docs.oracle.com/javase/7/docs/api/java/util/concurrent/… 。除非您调用了 executor.shutdown,否则它们将返回 false
-
我还建议看看这个 stackflow 答案 --> stackoverflow.com/questions/33845405/…
标签: java multithreading javafx