章节测试

第11章:Future和CompletableFuture

返回章节内容

测试你的掌握程度

共5道题,每题20分,总分100分

第1题
关于Future接口的描述,以下哪个是正确的?
正确答案:C
Future.get()方法是阻塞的,它会等待异步任务完成并返回结果。如果任务还没有完成,调用线程会被阻塞直到任务完成。可以使用get(timeout, unit)方法设置超时时间避免无限等待。
第2题
FutureTask相比于Future接口,额外实现了哪个接口?
正确答案:B
FutureTask既实现了Future接口,也实现了Runnable接口。这使得FutureTask既可以作为Future来获取异步计算的结果,也可以作为Runnable直接提交给线程或线程池执行。
第3题
以下哪个方法用于创建一个有返回值的CompletableFuture?
正确答案:B
CompletableFuture.supplyAsync()方法用于创建有返回值的异步任务,它接受一个Supplier函数式接口。而runAsync()用于创建无返回值的异步任务,allOf()和anyOf()用于组合多个CompletableFuture。
第4题
在CompletableFuture中,thenCompose()和thenCombine()方法的区别是什么?
正确答案:A
thenCompose()用于串行组合两个CompletableFuture,第二个Future依赖于第一个Future的结果。thenCombine()用于并行组合两个独立的CompletableFuture,将它们的结果合并处理。
第5题
以下哪个方法可以用来处理CompletableFuture中的异常?
正确答案:C
exceptionally()方法专门用于处理CompletableFuture中的异常,当异步操作发生异常时,可以提供默认值或替代逻辑。此外,handle()和whenComplete()方法也可以用于异常处理。