1.简介
Oracle甲骨文公司于2015年1月15日发布了新一版JDK8,新版本加入了许多新的特性。这些特性带来了一些改变,可以很大方便Java程序的编写。新特性主要涉及:对于JDK7中Fork/Join并行处理的升级;支持Lambda表达式;添加了Stream API;对于注解的拓展,加入了类型注解、重复注解;在G1回收器中支持字符串去重;内存空间中删除了永久代,引入了元空间。
2.新特性
2.1 Fork/Join
JDK7引入了轻量级的数据并行fork/join框架,但用户必须实现自己的算法以完成简单任务/普通任务,在JDK8中提供了并行数组排序的标准实现。相比JDK7,JDK8中fork/join运行效率更高。
2.1.1 并行API
通过这个接口可以对数组通过并行处理的方式进行排序
int[] numbers = {2,1,3};
Arrays.parallelSort(numbers);
2.1.2 Fork/Join基准测试 JDK7 vs JDK8
通过
Java Microbenchmark Harness project写一个基准测试来对比Java最近的两个版本JDK7&JDK8,可以发现Fork/Join运行效率在单线程环境下没有明显区别,在多线程环境下,运行JDK8的Fork/Join效率明显提高。
2.2 Lambda
JDK8中引入了函数式编程Lambda表达式,这是Java第一次引入函数式编程的相关内容。对于Java中的函数式接口java.lang.Runnable、java.util.Comparator等,都可以使用Lambda表达式来简化代码。
以Runnable接口为例,创建一个传统线程代码:
public void runThread() {
new Thread(new Runnable() {
public void run() {
System.out.println("Run!");
}
}).start();
}