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

java - 如何在Java中实现调用B接口时监听A接口执行状态?

乌和畅
2023-11-30

Java
想实现调用B接口时,监听A接口是否已经执行完成

调用B接口时,能监听到A有没有执行完

共有2个答案

慕光霁
2023-11-30

我觉得Future 接口可以满足你的需求。

举例:

    AtomicReference<Future<String>> ref = new AtomicReference<>();    void start(){        CompletableFuture<String> aF = CompletableFuture.supplyAsync(this::a);        ref.set( aF);    }    String a(){        return "a  ret";    }    void b() throws ExecutionException, InterruptedException {        Future<String> aF = ref.get();        // 是否执行完?        boolean done = aF.isDone();        // 获取a接口的返回结果        if (done) {            String ret = aF.get();        }    }
卓宏达
2023-11-30

最简单的方法,一个线程,先调用 A,再调用 B
如果是从一个线程里开始的异步,调用 A 返回个 Future,调用 B 的时候检查 Future 状态
如果不是一个线程里开始的,做一个全局变更标记一下
如果不是一个程序的…算了其实都一样

 类似资料:
  • 问题内容: 我有: 因此,如果我正确理解循环继承的发生,是因为: 编译器转到 A 并说: “嘿,A实现了BListener,让我们去查找BListener!” 然后,当它尝试找到BListener时,最终到达 B ,它说: “嘿,B侦听器,A所需的B侦听器在B内!但是等待!B的侦听器需要A!我们去寻找AListener!” 然后到达A,重复一次。我说对了吗? 顺便说一下,这个编译错误发生在我的An

  • 问题内容: 如何创建实现此接口的Clojure对象,然后从Java代码调用它? 问题答案: 是实现接口的首选- 重型,较旧且较慢,因此应尽可能避免。一个实现看起来像:

  • 假设我有下面的代码... 不管类ImplementTwo是同时实现B和A,还是只实现B,它仍然需要在接口A中实现方法A(),因为接口B扩展了接口A。有什么理由显式地这样做吗 而不只是 ?

  • 问题内容: 我不确定如何在我的抽象类中实现类似的接口。我有以下示例代码可用来尝试解决这个问题: 我有一个测试类,该类将创建Animal类型的对象,但是我希望在该类中具有一个可比的接口,以使发现的年纪高于低位。我不知道如何去解决这个问题。 问题答案: 您只需要定义即p。然后,您必须以自己喜欢的方式实现该方法。 使用的实现,具有较高级别的动物将获得更高的顺序。我希望你的想法和这个例子。

  • 我不确定如何在我的抽象类中实现一个可比较的接口。我有下面的示例代码,我正在使用它来尝试和得到我的头脑周围: 我有一个测试类,它将创建动物类型的对象,但是我想在这个类中有一个类似的接口,这样更早的发现排名就会更高。不过,我不知道该怎么做。

  • 问题内容: 有没有为接口方法创建默认实现的首选方法或样式?假设我有一个常用的接口,在90%的情况下,我想要的功能是相同的。 我的第一个直觉是用静态方法创建一个具体的类。然后,当我想要默认功能时,可以将功能委托给静态方法。 这是一个简单的示例: 接口 方法的具体实现 使用默认功能的具体实现 这里有更好的方法吗? 编辑 在看到了一些建议的解决方案之后,我认为我应该更加清楚自己的意图。本质上,我正在尝试