ITPub博客

首页 > 应用开发 > IT综合 > 直播视频app源码如何返回多线程的结果

直播视频app源码如何返回多线程的结果

IT综合 作者:云豹科技阿星 时间:2021-09-29 16:59:07 0 删除 编辑

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

private void test() {
    System.out.println("开始...");
    CompletableFuture.supplyAsync(new Supplier<String>() {
        @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<String>() {
        @Override
        public String get() {
            try {
                TimeUnit.SECONDS.sleep(5);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("返回 B");
            return "B";
        }
    }), new Consumer<String>() {
        @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秒执行完毕才返回结果,那么直播视频app源码就采用线程A执行的结果。

声明:本文由云豹科技转发自开开心心过博客,如有侵权请联系作者删除


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69982461/viewspace-2794451/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-08-24

  • 博文量
    239
  • 访问量
    115582