Java異步CompletableFuture

package integral;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

/**
 * 
 * @author YangTG
 * 異步執行
 */
public class CompletableFutureDemo {
	
	public static void any(){
		System.out.println("runAsync..");
	}
	
	public static String any1(){
		return "supplyAsync...";
	}
	
	public static void main(String[] args) throws InterruptedException, ExecutionException {
		
		List<CompletableFuture> list = new ArrayList<>();
		int i=0;
		//沒有返回值異步
		/*while(i<5){
			CompletableFuture<Void> comp = new CompletableFuture<>().runAsync(()->{
				CompletableFutureDemo.any();
				
			});
			list.add(comp);
			i++;
		}*/
		CompletableFuture<String> future =null;
		//有返回值
		while(i<5){
			 future = new CompletableFuture<>().supplyAsync(()->{
				return CompletableFutureDemo.any1();
			});
			list.add(future);
			i++;
		}
		//之前執行
		future.thenRun(()->{
			CompletableFutureDemo.any();
		});
		System.out.println("執行完畢");
		list.forEach(a->{
			try {
				System.out.println(a.get());
			} catch (Exception e) {
				e.printStackTrace();
			} 
		});
	}
}

執行結果

runAsync..
執行完畢
supplyAsync...
supplyAsync...
supplyAsync...
supplyAsync...
supplyAsync...

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章