zoukankan      html  css  js  c++  java
  • completableFuture

    completableFuture jian简化java异步开发

    package org.coffee.mala.test;
    
    import java.util.concurrent.CompletableFuture;
    import java.util.concurrent.ExecutionException;
    import java.util.function.Supplier;
    
    import org.springframework.stereotype.Service;
    
    @Service
    public class BookAsyncService {
    
    	public BookDetails getBookDetails(String bookId) throws InterruptedException, ExecutionException {
    
    		Book book = getBook(bookId);
    		CompletableFuture<ChuBanShe> chuBanShe = CompletableFuture.supplyAsync(new Supplier<ChuBanShe>() {
    
    			@Override
    			public ChuBanShe get() {
    
    				return getChuBanShe(book.getChuBanSheId());
    			}
    
    		});
    		CompletableFuture<GongYingShang> gongYingShang = CompletableFuture.supplyAsync(new Supplier<GongYingShang>() {
    
    			@Override
    			public GongYingShang get() {
    
    				return getGongYingShang(book.getGongYingShangId());
    			}
    
    		});
    		CompletableFuture<BookDetails> result = chuBanShe.thenCombine(gongYingShang, (chs, gys) -> {
    			BookDetails bookDetails = new BookDetails();
    			bookDetails.setBook(book);
    			bookDetails.setChuBanShe(chs);
    			bookDetails.setGongYingShang(gys);
    			return bookDetails;
    		});
    		return result.get();
    	}
    
    	public Book getBook(String bookId) {
    
    		try {
    			Thread.sleep(2000);
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		}
    		Book book = new Book();
    		book.setId(bookId);
    		book.setName("shu ming");
    		book.setChuBanSheId("chuBanSheId");
    		book.setGongYingShangId("gongYingShangId");
    		return book;
    	}
    
    	public ChuBanShe getChuBanShe(String chuBanSheId) {
    
    		try {
    			Thread.sleep(2000);
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		}
    		ChuBanShe chuBanShe = new ChuBanShe();
    		chuBanShe.setId(chuBanSheId);
    		chuBanShe.setName("chu ban she");
    		return chuBanShe;
    	}
    
    	public GongYingShang getGongYingShang(String gongYingShangId) {
    
    		try {
    			Thread.sleep(2000);
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		}
    		GongYingShang gongYingShang = new GongYingShang();
    		gongYingShang.setId(gongYingShangId);
    		gongYingShang.setName("gong ying shang");
    		return gongYingShang;
    	}
    
    }
    
  • 相关阅读:
    异或和之和
    Wannafly挑战赛19C:多彩的树
    HDU 6035 树形dp
    利用C++套接字发送邮件
    洛谷P3368树状模板(区间更新+单点查询+差分)
    CCF 201903-1 小中大
    关于树状数组
    CODEVS 4189 (前缀是否出现)
    关于字典树
    hdu 1022 Train Problem
  • 原文地址:https://www.cnblogs.com/zhucww/p/11196272.html
Copyright © 2011-2022 走看看