CompletableFuture.supplyAsync执行带超时时间
时间: 2024-04-18 10:22:16 浏览: 132
CompletableFuture.supplyAsync是Java 8中引入的一个类,用于支持异步编程和并发操作。它可以在后台执行一个任务,并返回一个Future对象,表示任务的结果。
要执行带超时时间的CompletableFuture.supplyAsync,可以使用CompletableFuture的方法之一:completeOnTimeout。这个方法可以设置一个超时时间,在指定的时间内如果任务没有完成,就会返回一个默认值。
下面是一个示例代码:
```java
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
public class CompletableFutureExample {
public static void main(String[] args) {
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 执行耗时任务
try {
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Task completed";
});
String result = future.completeOnTimeout("Task timeout", 3, TimeUnit.SECONDS)
.join();
System.out.println(result);
}
}
```
在上面的示例中,我们使用CompletableFuture.supplyAsync创建了一个异步任务,模拟了一个耗时任务(sleep 5秒)。然后使用completeOnTimeout方法设置了超时时间为3秒,并指定了超时后返回的默认值为"Task timeout"。最后通过join方法获取任务的结果。
如果任务在超时时间内完成,将返回任务的结果;如果任务没有在超时时间内完成,将返回设置的默认值。
阅读全文