当前位置: 首页 > 知识库问答 >
问题:

如何在java中创建完整的未来

松灿
2023-03-14

用Java构建完整未来的最佳方式是什么?我已经实现了我自己的下面的< code>CompletedFuture,但希望像这样的东西已经存在。

public class CompletedFuture<T> implements Future<T> {
    private final T result;

    public CompletedFuture(final T result) {
        this.result = result;
    }

    @Override
    public boolean cancel(final boolean b) {
        return false;
    }

    @Override
    public boolean isCancelled() {
        return false;
    }

    @Override
    public boolean isDone() {
        return true;
    }

    @Override
    public T get() throws InterruptedException, ExecutionException {
        return this.result;
    }

    @Override
    public T get(final long l, final TimeUnit timeUnit) throws InterruptedException, ExecutionException, TimeoutException {
        return get();
    }
}

共有3个答案

幸乐湛
2023-03-14

Guava定义了Futures.immediateFuture(value),它执行这项工作。

程智明
2023-03-14

Apache Commons Lang定义了类似的实现,称为ConstantFuture,您可以通过调用

Future<T> future = ConcurrentUtils.constantFuture(T myValue);
云利
2023-03-14

在Java 8中,您可以使用内置的CompletableFuture:

 Future future = CompletableFuture.completedFuture(value);
 类似资料:
  • 我想要一个完整的未来,只发出完成的信号(例如,我没有返回值)。 我可以将CompletableFuture实例化为: 但是我应该向完整的方法提供什么呢?例如,我不能做

  • 问题内容: 我想读取捕获的异常的完整堆栈跟踪。 例如: 我想阅读“ … 23更多”,以了解异常的来源。 问题答案: 答案很简单,这些行已经在stacktrace中了:) 基本上,以下情况正在发生:

  • 问题内容: 我知道我可以轻松创建表的副本,但是我需要复制: columns comments tablespace indexes grants triggers keys default values … any other dependencies 有办法通过程序吗?我的Oracle版本是 11R2 。 表的SQL: 问题答案: 您可以使用包,该程序可以对整个表进行复制,包括注释等。它还可以对

  • 问题内容: 我正在尝试创建完整路径(如果不存在)。 代码如下: 只要只有一个子目录(例如“ dir1”之类的newDest),此代码就可以很好地工作,但是当存在一个目录路径(“ dir1 / dir2”)时,它将失败并显示 错误:ENOENT,没有这样的文件或目录 我希望能够用最少的代码行来创建完整路径。 我读到fs上有一个递归选项,并像这样尝试过 我觉得递归地创建一个不存在的目录应该很简单。我是

  • 所以lv在“v”或“v”后面会有一个“_”,在那之后会有一个整数,比如“_v1”,“_v2”,所以在结尾会是一个整数,但不是任何整数,它应该是整数a。谢谢!

  • 在前四十来章中,我们讲解了许多基础方面的内容。 在本书的最后部分,我们将尝试从零开始为一门语言创造Vim插件。 这不是个适合懦夫的游戏。这将需要你竭尽全力。 如果你现在就想退出,那确实也不坏!你已经学到了如何在~/.vimrc里改善你的生活, 还有如果修复别人的插件里的bugs。 有"这就够了,我不想虚掷光阴于创造一个我将不会使用的插件"这种想法并不可耻。 现实一点。如果你不想创造一个自己想用的插