我正在尝试使用Complettable Future异步运行两个任务。该程序异步运行,因此a()和b()以任何顺序同时首先运行。但是c()只能在a()或b()之一完成后运行
class Pair{
public void pair2() throws InterruptedException, ExecutionException {
CompletableFuture<Void> fa = CompletableFuture.runAsync(() -> a());
CompletableFuture<Void> fb = CompletableFuture.runAsync(() -> b());
if(fa.isDone || fb.isDone){ //should not be if loop.
c();
}
return;
}
public void a(){
System.out.println("I'm a.");
return;
}
public void b(){
System.out.println("I'm b.");
return;
}
public void c(){
System.out.println("I'm c, I cannot be the first!");
return;
}
}
我不熟悉CompletableFuture API,有没有办法检查其中一个任务是否完成并调用下一个方法C?
您可以使用< code > xxxone 方法之一。例如:
CompletableFuture<Void> fc = fa.acceptEither(fb, v -> c());
或者您可以使用< code>anyOf方法:
CompletableFuture.anyOf(fa, fb).thenRun(this::c);
本文向大家介绍C#异步执行任务的方法,包括了C#异步执行任务的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#异步执行任务的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的C#程序设计有所帮助。
示例: 当我在测试套件中执行这些类时,首先执行类1的@test,然后打开一个新的浏览器实例,其中执行类2的@test。现在执行类1的第二个@test,然后执行类2的第二个@test。注意:在这种情况下测试并行为false。需要知道为什么会这样。我希望第一类的执行在第二类开始之前完成。我想不通。我做了一些变通办法,但没有奏效。 提前道谢。
问题内容: 我正在编写一个swing应用,当执行某些方法时,我希望有“ wait”光标。我们可以这样: 我想要实现的是一个Java批注,该批注将在方法执行之前设置等待游标,并在执行后将其设置回正常状态。所以前面的例子看起来像这样 我怎样才能做到这一点?也欢迎提出有关解决此问题的其他方法的建议。谢谢! PS-我们在项目中使用Google Guice,但我不知道如何使用它来解决问题。如果有人为我提供类
我使用hibernate持久化方法得到了一些奇怪的结果。下面是解释。 1) 用户服务简单 2) 用户道 3) JSMListener 现在,当我传递重复的电子邮件id时,我的userDao方法应该抛出异常,然后我的下一步* * message sender . send user message(queue,user dto);**不应该叫。但当我传递重复的电子邮件id时,UserDaoImpl抛
我有一个测试方法,看起来像: 并行工作使用可关闭的资源来控制生命周期,该资源在方法中关闭: 问题是:方法是在完成工作之前和等待超时到期之前调用的。 怎么可能?那我该怎么解决呢?