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