Java CompletableFuture结合线程池 - 异步多线程

Java CompletableFuture结合线程池 - 异步多线程


https://www.cnblogs.com/dongye95/p/16352895.html

什么是CompletableFuture

CompletableFuture是对Future的扩展和增强。CompletableFuture实现了Future接口,并在此基础上进行了丰富的扩展,完美弥补了Future的局限性,同时 CompletableFuture 实现了对任务编排的能力。借助这项能力,可以轻松地组织不同任务的运行顺序、规则以及方式。

异步执行方法

public static CompletableFuture<Void> runAsync(Runnable runnable)
public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor)

public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier)
public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier, Executor executor)

CompletableFuture.runAsync(Runnable runnable): 这个方法接收一个Runnable接口的实现,用于异步执行没有返回值的任务。它返回一个CompletableFuture。

CompletableFuture.runAsync(() -> {
    // 执行一些长时间运行的任务
});

CompletableFuture.supplyAsync(Supplier supplier): 这个方法接收一个Supplier接口的实现,用于异步执行有返回值的任务。它返回一个CompletableFuture,其中U是异步任务的结果类型。

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    // 执行一些长时间运行的任务
    return "任务结果";
});

如何使用线程池完成异步多线程

runAsync

items.stream().forEach(item ->
	CompletableFuture.runAsync(() -> mapper.insert(item), threadPool));

supplyAsync

List<CompletableFuture> rCompletableFutures = items.stream().map(item ->
	CompletableFuture.supplyAsync(() -> {
		return mapper.select(item);
		}, threadPool)).collect(Collectors.toList());
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值