Java异步CompletableFuture的使用
2024-10-09 13:25:04
所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法。Java中的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)
没有指定Executor的方法会使用ForkJoinPool.commonPool() 作为它的线程池执行异步代码。如果指定线程池,则使用指定的线程池运行。其中:
runAsync方法不支持返回值。
supplyAsync可以支持返回值。
如下:
//无返回值
public static void runAsync() throws Exception {
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
try {
System.out.println("run start ...");
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException e) {
}
System.out.println("run end ...");
}); future.get();
} //有返回值
public static void supplyAsync() throws Exception {
CompletableFuture<Long> future = CompletableFuture.supplyAsync(() -> {
try {
System.out.println("run start ...");
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException e) {
}
System.out.println("run end ...");
return System.currentTimeMillis();
}); long time = future.get();
System.out.println("time = "+time);
}
今天写到这里,简单的使用如上代码,后续会有更新。
最新文章
- 93、持续集成以及Jenkins的知识介绍
- Java多线程系列--“基础篇”06之 线程让步
- C++: read SQL server data using System::Data::SqlClient
- java 22 - 16 多线程之生产者和消费者的问题
- http协议(八)请求首部字段
- October 12th 2016 Week 42nd Wednesday
- Weblogic 10.3.6生产模式启动
- MongoDB常用操作一查询find方法db.collection_name.find()
- python 二分法查找
- git checkout not discard changes
- linux常用命令之--磁盘管理命令
- jquery.prompt.js 弹窗的使用
- 关于国际化中的$NON-NLS-1$
- 用java写bp神经网络(二)
- ASP.NET-FineUI开发实践-1
- 原生Javascript 省市区下拉列表插件
- VS2008让自己掌控的定义编译项目后,自己主动添加到工具箱
- pro asp.net mvc5
- Python+requests库 POST接口图片上传
- 数据的分类-JavaScript数据类型
热门文章
- laravel开发调试工具laravel-debugbar的安装
- minSdkVersion、targetSdkVersion、compileSdkVersion三者的作用解析
- Redis之Redis的数据类型
- PHP系列之钩子
- PHP ftp_quit() 函数
- luogu P2354 [NOI2014]随机数生成器 贪心 卡空间 暴力
- 服务治理框架dubbo中zookeeper的使用
- MyBatis-Plus使用(3)-条件构造器
- 加密模块hashlib模块(* *)
- 第一次MySQL的SQL注入实验