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();
});
}
}
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();
});
}
}
相关文章推荐
- Java8学习计划--关于多核多线程并发编程-Java8-CompletableFuture 4的介绍
- Java8学习计划--关于多核多线程并发编程-Java8-CompletableFuture 3的介绍
- Java8学习计划--关于多核多线程并发编程-Java8-CompletableFuture 2的介绍
- Java8学习计划--关于多核多线程并发编程-JDK8之前的Future使用
- Java8学习计划--关于多核多线程并发编程-自定义Future并且增加监听器的实现
- 关于JAVA学习的书籍介绍
- 在A20上演示老罗的Android硬件抽象层(HAL)概要介绍和学习计划2--关于kernel部分
- [JAVA][学习笔记]关于java.util.concurrent中 Future类的一些验证
- 关于JAVA学习计划和感想
- 在A20上演示老罗的Android硬件抽象层(HAL)概要介绍和学习计划3--关于hal部分
- 在A20上演示老罗的Android硬件抽象层(HAL)概要介绍和学习计划5--关于APP部分
- 哪位大哥介绍几本好书? 关于学习数据结构与算法的书
- 关于java1.5的泛型(general)的学习
- 关于Java的入门学习方案
- 关于学习java一年的学习体会
- 关于java学习一位好友给的建议
- 学习java(二)-----关于jdbc连接的"擦屁股"问题
- 关于为什么学习JAVA WEB开发
- Java2核心技术第七版的学习笔记(一):An Introduction to Java(Java的介绍)