您的位置:首页 > 编程语言 > Java开发

Java8学习计划--关于多核多线程并发编程-Java8-CompletableFuture 1的介绍

2018-03-09 17:21 405 查看
零零散散接近一个月的课余时间,学完Java8InAction和Guava,感触很多,收获也很大,特别开心,接下来会利用空余时间学习Spark,希望自己在技术上慢慢积累,越来越从容。对于Java8 最大的改变是lambda表达式 Collecotors CompletableFutures等 Funtional Programing.的思想真的很强大下面介绍Java8 CompletableFuture 1  采用ExecutorService的线程池提供CompletableFuture的线程计算package com.company.LambdaExpressions.Futures.CompletableFuture;

import java.util.concurrent.*;

/**
* Created by mengxiaopeng on 2018/3/9.
* com.company.LambdaExpressions.Futures.CompletableFuture
* 1.采用ExecutorService的线程池提供CompletableFuture的线程计算
*/
public class MyCompletableFutureInAction1 {

public static void main(String[] args) {
//##方式一 对线程池里面的线程进行初始化设置
ExecutorService executorService = Executors.newFixedThreadPool(2, runnable -> {
Thread t = new Thread(runnable);
t.setDaemon(false);
return t;
});

//默认不是守护线程 默认false setDaemon(false);
//##1.0 旧方式 一般不建议使用
ExecutorService executorPool = Executors.newFixedThreadPool(2);
Future<Double> submit = executorPool.submit(MyCompletableFuture::generateRandomDouble);
Double aDouble = null;
try {
aDouble = submit.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println(aDouble);

//####建议使用###2.0 CompletableFuture方式
CompletableFuture.supplyAsync(MyCompletableFuture::generateRandomDouble,executorPool)
.whenComplete((v,t)->{
System.out.println(v);
t.printStackTrace();
});
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息