在了解lambda表达式之前,需要先了解一下函数式接口
函数式接口:有且仅有一个抽象方法的接口;
例子:Runnable接口,上源码
可以看到注解FunctionalInterface用来检测函数式接口,如果不符合会报错,如下图:
接下来比较下使用lambda表达式新建线程与平时新建线程的区别
public class ForList {
public static void main(String[] args) {
//新建线程的方式1
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("create first thread");
}
}).start();
//使用lambda表达式来新建线程
new Thread(()-> System.out.println("create second thread ")).start();
}
}
可以 直观的看出,lambda表达式更加简洁,代码更加的精简;
另外,需要注意变量在表达式中的使用
lambda表达式不能去修改外部的变量
interface UserInterface{
void userMethod();
}
在main方法中
修改了外部的变量,就会报错