1、Runnable接口(只有一个run函数,该函数没有返回值),接下来我们就来聊聊关于runnable接口是在什么包中?以下内容大家不妨参考一二希望能帮到您!

runnable接口是在什么包中(RunnableCallableRunnableFuture)

runnable接口是在什么包中

1、Runnable接口(只有一个run函数,该函数没有返回值)

2、Callable接口(只有一个call函数,该函数有返回值)

3、Future接口(Executor就是Runnable和Callable的调度容器)对具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果、设置结果等操作

4、RunnableFuture接口(对Runnable和Future继承的一个接口)常用实现类:FutureTask

FutureTask的构造函数会把Runnable类型转成Callable类型,所以FutureTask最终都是执行Callable类型的任务

5、CompletionStage接口(java8新增接口,用于异步执行中的阶段处理)CompletableFuture对Future的扩展增强

(1)在上一阶段执行结束之后,一阶段结果作为指定函数的参数执行函数产生新的结果

eg:CompletableFuture.supplyAsycn(()- > { }, asyncTaskExecutor).thenApply /thenCombine/ applyToEither;

(2)在上一阶段执行结束之后,一阶段结果作为指定函数的参数执行函数,accept方法

eg:CompletableFuture.supplyAsycn(()- > { }, asyncTaskExecutor).thenAccept /thenAccptBoth/ acceptEither;

(3)在上一阶段执行结束之后,不依赖一阶段执行结果,执行指定的操作,run方法接口参数为Runnable类型

eg:CompletableFuture.supplyAsycn(()- > { }, asyncTaskExecutor).thenRun /runAfterBoth/ RunAfterEither;

关键词:

apply:上阶段结果作下阶段参数继续执行并返回结果

accept:上阶段结果作下阶段参数继续执行不返回结果

run:上阶段执行完比下阶段执行

async:异步执行,指定或者不指定线程池

both:前两阶段同时执行完毕执行下一阶段

either:前两阶段任一执行完毕执行下一阶段

combine:类似apply,但下一阶段执行的必须是BiFunction

compose:基于上阶段的执行完状态,执行下一阶段

complete:基于上阶段的执行完状态和结果,消费其结果

handler:基于上阶段的执行完状态和结果,消费其正常或者异常结果

exceptionally:消费异常结果

常用于接口并行计算,优化接口。

CompletableFuture可以指定异步处理流程:

thenAccept()处理正常结果;

exceptional()处理异常结果;

thenApplyAsync()用于串行化另一个CompletableFuture

anyOf()和allOf()用于并行化多个CompletableFuture

在CompletableFuture执行Task的时候,是需要使用线程池还是用当前的线程去执行。这个需要根据具体的情况来定。使用的时候要尽可能的小心。java中Runnable、Callable、Future、RunnableFuture、CompletionStage接口区别

,