从库中返回 Java Future 的最佳实践

Kev*_*han 5 java future

我正在开发一个实现跳转点搜索算法的 Java 库。您可以调用两种公开的方法来运行搜索。一个同步的,一个返回Future结果的 Java 。

public Future<Queue<T>> findPath(T start, T goal) {
    FutureTask<Queue<T>> future = new FutureTask<>(() -> findPathSync(start, goal));
    future.run();
    return future;
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是,在这种情况下,最佳实践是什么。库应该实际运行FutureTask并返回Future,还是应该返回 aFutureTask并且最终用户必须知道该任务尚未实际执行?

谢谢!

Dou*_*rop 4

我不能真正谈论“最佳实践”,但是,作为用户,如果我调用一个方法,我的默认假设是它触发了某些东西 - 它启动了执行 - 通常“仅构造”范例是为构建器保留的模式或工厂。

所以上面的代码是我所期望的行为,也是我觉得我最常看到的(如果不是总是),即使在其他系统(即 Node.js)中也是如此