java8-新的异步编程方式-初步

java8新的异步编程方式

package com.test.java8;

import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;

/**
 * java8新的异步编程方式
 *
 * @date 2018/12/28 17:17
 */
public class CompletableFutureTest {


    public static void main(String[] args) {

        supplyAsyncTest();

//        runAsyncTest();

    }

    private static void runAsyncTest() {
        System.out.println("<------------------------开始执行------------------------------>");
        // 该方式不会执行,
//        CompletableFuture.runAsync(() -> {
//            for (int i = 0; i < 100; i ++) {
//                System.out.println("异步方法1 ==》 " + i);
//            }
//        });
        CompletableFuture<Void> voidCompletableFuture = CompletableFuture.runAsync(() -> {
            for (int i = 0; i < 100; i++) {
                System.out.println("异步方法1 ==》 " + i);
            }
        });

        CompletableFuture<Void> voidCompletableFuture1 = CompletableFuture.runAsync(() -> {
            for (int i = 0; i < 100; i++) {
                System.out.println("异步方法2 --> " + i);
            }
        });

        for (int i = 0; i < 100; i++) {
            System.out.println("-- 后续操作,get前 --> " + i);
        }

        try {
            Void aVoid = voidCompletableFuture.get();
            System.out.println(aVoid);
            voidCompletableFuture1.get();
        }catch(Exception e){

        }

        for (int i = 0; i < 100; i++) {
            System.out.println("-- 后续操作,get后 --> " + i);
        }

        System.out.println("<------------------------执行结束------------------------------>");
    }

    private static void supplyAsyncTest() {
        System.out.println("<------------------------开始----有返回值异步方法------------------------------>");
        CompletableFuture<List<String>> listCompletableFuture = CompletableFuture.supplyAsync(() -> {
            for (int i = 0; i < 100; i++) {
                System.out.println("异步方法1 ==》 " + i);
            }
            return Arrays.asList("a", "b", "c", "d", "e", "f");
        });
        CompletableFuture<List<String>> listCompletableFuture2 = CompletableFuture.supplyAsync(() -> {
            for (int i = 0; i < 100; i++) {
                System.out.println("异步方法2 --> " + i);
            }
            return Arrays.asList("a1", "b1", "c1", "d1", "e1", "f1");
        });

        for (int i = 0; i < 100; i++) {
            System.out.println("-- 后续操作,get前 --> " + i);
        }

        List<String> strings;
        List<String> strings1;
        try{
            strings = listCompletableFuture.get();
            strings1 = listCompletableFuture2.get();
        }catch(Exception e){
            throw new RuntimeException("执行异常");
        }

        for (int i = 0; i < 100; i++) {
            System.out.println("-- 后续操作,get后 --> " + i);
        }

        System.out.println(strings);
        System.out.println(strings1);
        System.out.println("<------------------------执行结束------------------------------>");
    }


}

猜你喜欢

转载自blog.csdn.net/qq_38946877/article/details/85330311