假设我有一个如下所示的任务,我希望它运行直到用户按下按钮。但是当按下按钮时,我不希望线立即断开。我希望它在返回之前完成正在做的事情。我怎样才能做到这一点?
task = new Service(){
@Override
protected Task createTask() {
System.out.println("Task created");
return new Task<Void>() {
@Override
protected Void call() throws Exception {
while(true) {
// Do stuff her
}
return null;
}
};
}
};
...
...
task.start();
最佳答案
只需通过按钮取消任务,然后检查取消情况。如果您仅检查任务何时完成“无论它正在做什么”,它都会在取消之前完成该任务。例如:
task = new Service(){
@Override
protected Task createTask() {
System.out.println("Task created");
return new Task<Void>() {
@Override
protected Void call() throws Exception {
while(!isCancelled()) {
// Do stuff here
}
return null;
}
};
}
};
Button cancelButton = new Button("Cancel");
cancelButton.setOnAction(e -> task.cancel());
关于java - 让任务在用户取消之前完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36969588/