从图书馆中回归Java未来的最佳实践

时间:2015-06-06 21:41:20

标签: java future

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:4)

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

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