package Demo05;
public class Demo02Lambda {
public static void main(String[] args) {
//使用的是匿名内部类方法
new Thread(new Runnable() { //因为这是一个匿名内部类所以可以使用接口来接收他
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "新线程创建了");
}
}).start();
//使用Lambda表达式,实现多线程 (一个括号一个箭头一些代码组成Lambda表达式)
new Thread(()-> {
System.out.println(Thread.currentThread().getName() + "新线程创建了");
}
).start();
}
}
匿名内部类的好处和弊端
匿名内部类可以帮我们省去实现类的定义另一方面有点复杂
仔细分析上面代码段中匿名内部类的代码 Runnable接口其实只有一个run方法的定义
public abstract void run();
run方法无参数 无返回值 只有方法体
同样的语义体现在Lambda语法中更加简单
()->{ System.out.println(Thread.currentThread().getName() + "新线程创建了"); }
1.前面的小括号代表run方法的参数这里是无所以空着,代表不需要任何条件
2.中间的一个箭头代表将前面的参数传递给后面的代码
3.后面的输出语句即业务逻辑代码
Lambda表达式的标准格式
Lambda表达式的标准格式
由三部分组成
1、一些参数
2、一个箭头
3、一段代码
格式
(参数列表)->{一些重写方法的代码}
解释说明格式
():接口中抽象方法的参数列表,没有参数就空着,有参数就写出参数多个参数用逗号分隔
-> :箭头是传递的意思,把参数传递给方法体{}
{}:重写接口抽象方法的方法体


