有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案