扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~
为灵武等地区用户提供了全套网页设计制作服务,及灵武网站建设行业解决方案。主营业务为成都网站建设、网站设计、灵武网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
多数码农在开发的时候,要么处理同步应用,要么处理异步。但是如果能学会使用CompletableFuture,就会具备一种神奇的能力:将同步变为异步(有点像用了月光宝盒后同时穿梭在好几个时空的感觉)。怎么做呢?来看看代码。
新增一个商店类Shop:
/**
* 商店类
*
*@author 湘王
*/
public class Shop {
private String name = "";
public Shop(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private double calculatePrice(String product) {
delay();
return 10 * product.charAt(0);
}
private void delay() {
try {
Thread.sleep(1000);
}catch (InterruptedException e) {
e.printStackTrace();
}
}
// 同步得到价格
public double getPrice(String word) {
return calculatePrice(word);
}
// 增加异步查询:将同步方法转化为异步方法
public Future getPriceAsync(String product) {
CompletableFuture future = new CompletableFuture<>();
new Thread(() -> {
double price = calculatePrice(product);
// 需要长时间计算的任务结束并返回结果时,设置Future返回值
future.complete(price);
}).start();
// 无需等待还没结束的计算,直接返回future对象
return future;
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流