java高并发系列 - 第31天:获取线程执行结果,这6种方法你都知道(1)

本文介绍了Java中获取线程执行结果的六种方法,包括使用CountDownLatch、ExecutorService.submit、FutureTask以及CompletableFuture等。通过示例代码详细展示了每种方法的使用方式,帮助读者理解如何在并发编程中等待任务完成并获取结果。
摘要由CSDN通过智能技术生成

1566733723453

1566733723453:10

上面代码也达到了预期效果,使用CountDownLatch可以让一个或者多个线程等待一批线程完成之后,自己再继续;CountDownLatch更详细的介绍见:JUC中等待多线程完成的工具类CountDownLatch,必备技能

方式3:ExecutorService.submit方法实现


代码:

package com.itsoku.chat31;

import java.util.concurrent.*;

/**

* 跟着阿里p7学并发,微信公众号:javacode2018

*/

public class Demo3 {

public static void main(String[] args) throws ExecutionException, InterruptedException {

//创建一个线程池

ExecutorService executorService = Executors.newCachedThreadPool();

System.out.println(System.currentTimeMillis());

Future<Integer> future = executorService.submit(() -> {

try {

TimeUnit.SECONDS.sleep(3);

} catch (InterruptedException e) {

e.printStackTrace();

}

return 10;

});

//关闭线程池

executorService.shutdown();

System.out.println(System.currentTimeMillis());

Integer result = future.get();

System.out.println(System.currentTimeMillis() + “:” + result);

}

}

输出:

1566734119938

1566734119989

1566734122989:10

使用ExecutorService.submit方法实现的,此方法返回一个Futurefuture.get()会让当前线程阻塞,直到Future关联的任务执行完毕。

相关知识:

  1. JAVA线程池,这一篇就够了

  2. JUC中的Executor框架详解1

  3. JUC中的Executor框架详解2

方式4:FutureTask方式1


代码:<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值