CompletableFuture的应用案例
package com.bilibili.juc;
import lombok.Getter;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
public class demo01 {
static List<NetMall> list = Arrays.asList(
new NetMall("jd"),
new NetMall("dangdang"),
new NetMall("taobao"),
new NetMall("pdd"),
new NetMall("tmall")
);
public static List<String> getPrices(List<NetMall> list,String productName){
return list.stream().map(netMall ->
CompletableFuture.supplyAsync(()-> String.format(productName + "in %s price is %.2f"
, netMall.getNetMallName(),
netMall.calcPrice(productName))))
.collect(Collectors.toList())
.stream()
.map(s->s.join()).collect(Collectors.toList());
}
public static List<String> getPrice(List<NetMall> list,String productName){
return list
.stream()
.map(netMall ->
String.format(productName + "in %s price is %.2f"
, netMall.getNetMallName(),
netMall.calcPrice(productName)))
.collect(Collectors.toList());
}
public static void main(String[] args) {
long tim=System.currentTimeMillis();
List<String> mysql = getPrice(list, "mysql");
for (String s : mysql) {
System.out.println(s);
}
long time=System.currentTimeMillis();
System.out.println(time - tim);
long tim11=System.currentTimeMillis();
List<String> mysql2 = getPrices(list, "mysql");
for (String s : mysql2) {
System.out.println(s);
}
long time22=System.currentTimeMillis();
System.out.println(time22 - tim11);
}
}
class NetMall{
@Getter
private String netMallName;
public NetMall(String netMallName) {
this.netMallName = netMallName;
}
public double calcPrice(String productName){
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return ThreadLocalRandom.current().nextDouble() * 2 + productName.charAt(0);//就获取一个随机数
}
}
本文作者:我是小杨
本文链接:https://www.cnblogs.com/Liguangyang/p/16492743.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步