泛型实例创建的类型推断
//后面的括号内可以不用加上具体泛型
List<String> list = new ArrayList<>();
同时捕获多个异常
try {
createException();
} catch (ClassNotFoundException | IOException e) {
// TODO: handle exception
}
使用下划线对数字进行分隔表达
int num = 1_2_3;
System.out.println(num);
支持字符串的switch
public static void newswitch(String str) {
switch (str) {
case "me":
System.out.println("me");
break;
default:
System.out.println("other");
break;
}
}
对资源文件try,catch。不需要再关闭了
public static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
fork/join框架
Fork/Join 模式是处理并行编程的一个经典的方法。虽然不能解决所有的问题,但是在它的适用范围之内,能够轻松的利用多个 CPU 提供的计算资源来协作完成一个复杂的计算任务。通过利用 Fork/Join 模式,我们能够更加顺畅的过渡到多核的时代
/**
* 计算第n个斐波那契数
* @author zhaozhihang
* @date 2016年8月4日
*
*/
public class Fibonacci extends RecursiveTask<Integer> {
/**
*
*/
private static final long serialVersionUID = 1L;
private final Integer n;
public Fibonacci(Integer n) {
this.n = n;
}
@Override
protected Integer compute() {
if (n <= 1) {
return n;
}
Fibonacci f1 = new Fibonacci(n - 1);
f1.fork();
Fibonacci f2 = new Fibonacci(n - 2);
f2.fork();
return f1.join() + f2.join();
}
public static void main(String[] args) throws InterruptedException, ExecutionException {
Fibonacci fibonacci = new Fibonacci(10);
ForkJoinPool pool = new ForkJoinPool();
//提交至ForkJoinPool中
ForkJoinTask<Integer> result = pool.submit(fibonacci);
//do someting
//阻塞方法
System.out.println(result.get());
}
}
参考
http://www.oschina.net/news/20119/new-features-of-java-7
http://www.ibm.com/developerworks/cn/java/j-lo-forkjoin/