java JavaFx savely正在停止后台任务
现在我有一个JavaFx程序,在线程中使用JavaFx任务作为后台进程
Task<Void> task = new Task<Void>( ){
@Override
protected Void call() throws Exception {
while(running){
doSomething();
}
saveData();
return null;
}
};
Thread th = new Thread(task);
th.start();
我希望尽可能平稳地停止这个过程(这意味着我希望通过设置running=false来停止这个过程;并因此尽可能地调用save()方法)。同时,我想确保在JavaFx进程(窗口)关闭后,后台进程没有机会继续运行
目前,我将线程设置为Deamon,以确保在JavaFx进程死后该进程死(只有这两个进程在运行)
th.setDeamon(true);
同时,我在我唯一的舞台上添加了一个CloseRequestListener
stage.setOnCloseRequest( e -> running = false);
现在我的问题是:
因为这个过程是Deamon,它可以在运行过程中被移除。有没有更好的方法来确保在JavaFx进程终止后后台任务终止?(即使JavaFx进程被强制终止)
或者有没有一种方法可以顺利地杀死一条执事线索
编辑:我的首要任务是,后台线程本身不能保持活动状态。第二个优先事项是尽可能平稳地终止后台线程
共 (0) 个答案