博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CompletableFuture的acceptEitherAsync:哪个线程跑的最快用那个
阅读量:7191 次
发布时间:2019-06-29

本文共 1365 字,大约阅读时间需要 4 分钟。

CompletableFuture的acceptEitherAsync:哪个线程跑的最快用那个

acceptEitherAsync:假设两个线程A和B,不确定A和B哪个最快执行完毕返回, 但是需要使用最快执行完毕的线程返回的结果。那么就可以使用代码:

private void test() {    System.out.println("开始...");    CompletableFuture.supplyAsync(new Supplier
() { @Override public String get() { try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("返回 A"); return "A"; } }).acceptEitherAsync(CompletableFuture.supplyAsync(new Supplier
() { @Override public String get() { try { TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("返回 B"); return "B"; } }), new Consumer
() { @Override public void accept(String s) { System.out.println("最快返回的:" + s); } });}

代码运行输出:

07-02 14:28:02.766 30166-30166/zhangphil.test I/System.out: 开始...

07-02 14:28:03.770 30166-30193/zhangphil.test I/System.out: 返回 A
07-02 14:28:03.772 30166-30193/zhangphil.test I/System.out: 最快返回的:A
07-02 14:28:07.771 30166-30194/zhangphil.test I/System.out: 返回 B

线程A仅需1秒即返回执行结果,而线程B需要长达5秒执行完毕才返回结果,那么就采用线程A执行的结果。

转载地址:http://icxkm.baihongyu.com/

你可能感兴趣的文章
七、SSR(服务端渲染)
查看>>
django--app(六)
查看>>
20165208 预备作业3Linux安装及学习
查看>>
洛谷P3379 【模板】最近公共祖先(LCA)
查看>>
获取一个表单字段中多条数据并转化为json格式
查看>>
c#中的变量,属性,字段
查看>>
JS实现延迟载入图片
查看>>
游戏开发中的人工智能
查看>>
Ubuntu 安装BCM 43142无线网卡驱动
查看>>
iOS 疑难杂症 — — UIButton 点击卡顿/延迟
查看>>
免费 官方的ASP.NET MVC电子书-Professional ASP.NET MVC 1.0
查看>>
PL/SQL DEVELOPER
查看>>
HDU-1179-Ollivanders(二分图最大匹配)
查看>>
牛客假日团队赛1 G.Superbull
查看>>
CSS的继承性和层叠性
查看>>
MQTT详解以及在IoT中的应用
查看>>
[python] - 读取文件内容,并输出
查看>>
$.fn.exted({})与$.extend({})区别
查看>>
apache 配置虚拟目录
查看>>
前端开发——HTML学习笔记
查看>>