三种方式的演化
Thread构造方法如下
public Thread(Runnable target) {
init(null, target, "Thread-" + nextThreadNum(), 0);
}
Runnable 是一个接口
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
调用对比:
public class App {
public static void main(String[] args) {
//default
new Thread(new Task()).start();
//匿名内部类
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("002");
}
}).start();
//Lambda表达式
new Thread(() -> {
System.out.println("003");
}).start();
}
}
class Task implements Runnable {
@Override
public void run() {
System.out.println("001");
}
}
匿名内部类 vs Lambda表达式
所以,不是所有使用匿名内部类的地方都可以使用Lambda表达式代替。
ref: https://www.geeksforgeeks.org/difference-between-anonymous-inner-class-and-lambda-expression/