Surprised => indulgence => Calm => Lost => Panic =>Calm

java 多线程-线程的两种创建方式-Callable-Future结合使用

Java imekaku 1394℃ 0评论

Java多线程的主要两种方式

实现Runnable方式,匿名对象(匿名对象匿名类)创建

Callable和Future结合实现实现在执行完任务后获取返回值

CompletableFuture 类使用

主动完成计算

CompletableFuture类实现了CompletionStage和Future接口,所以你还是可以像以前一样通过阻塞或者轮询的方式获得结果,尽管这种方式不推荐使用。参考地址:http://colobu.com/2016/02/29/Java-CompletableFuture/

创建CompletableFuture对象

四个静态方法用来为一段异步执行的代码创建CompletableFuture对象

runAsync它以Runnable函数式接口类型为参数,所以CompletableFuture的计算结果为空。

supplyAsync方法以Supplier函数式接口类型为参数,CompletableFuture的计算结果类型为U。

计算结果完成时的处理

当CompletableFuture的计算结果完成,或者抛出异常的时候,我们可以执行特定的Action。主要是下面的方法。

可以看到Action的类型是BiConsumer< ? super T,? super Throwable>,它可以处理正常的计算结果,或者异常情况。

方法不以Async结尾,意味着Action使用相同的线程执行,而Async可能会使用其它的线程去执行(如果使用相同的线程池,也可能会被同一个线程选中执行)。

注意这几个方法都会返回CompletableFuture,当Action执行完毕后它的结果返回原始的CompletableFuture的计算结果或者返回异常。

转载请注明:Imekaku-Blog » java 多线程-线程的两种创建方式-Callable-Future结合使用

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址