多线程异步编排

CompletableFuture

使用举例:

  • 任务的合并
  • 最快完成任务的时候
  • 所有任务都完成的时候
  • 异常的处理

@FunctionalInterface 才支持lamoda表达式

底层方法:

supplyAsync() 异步运行

thenCombine() 合并

thenAccept() 上面执行完触发此方法

get() 同步获取结果

get(long timeout, TimeUnit unit) 某个时间段内返回结果 获取不到直接返回 防止线程一直堵塞

getNow() 立马获取结果,获取不到的话直接返回括弧中的参数

anyOf(CompletableFuture…) 任何一个,只有有一个执行完就结束(处理最快完成)

allOf(CompletableFuture…) 所有任务执行完毕再结束

异常处理底层用的是ForkJoinPool

你可能感兴趣的:(Java)