Java组合异步编程(2)

您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~

为灵武等地区用户提供了全套网页设计制作服务,及灵武网站建设行业解决方案。主营业务为成都网站建设、网站设计、灵武网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

多数码农在开发的时候,要么处理同步应用,要么处理异步。但是如果能学会使用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;
    }
}

名称栏目:Java组合异步编程(2)
路径分享:http://scyanting.com/article/dsoiodd.html