package myLambdaDemo;
public class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("多线程程序启动了");
}
}
package myLambdaDemo;
/*
启动一个多线程,在控制台输出一句话,多线程程序启动了
*/
public class LambdaDemo {
public static void main(String[] args) {
//实现类的方式实现需求
// MyRunnable my = new MyRunnable();
// Thread t = new Thread(my);
// t.start();
//匿名内部类的方式改进
// new Thread(new Runnable() {
// @Override
// public void run() {
// System.out.println("多线程程序启动了");
// }
// }).start();
//lambda表达式的方式改进
//(形式参数) -> {代码块}
new Thread(() -> {
System.out.println("多线程程序启动了");
}).start();
}
}
1.无参无返回值
package myLambdaDemo;
public interface Eatable {
void eat();
}
package myLambdaDemo;
public class EatableImpl implements Eatable {
@Override
public void eat() {
System.out.println("一天一苹果,医生远离我");
}
}
package myLambdaDemo;
public class EatableDemo {
public static void main(String[] args) {
//在主方法中调用useEatable方法
Eatable e = new EatableImpl();
useEatable(e);
//匿名内部类
useEatable(new Eatable() {
@Override
public void eat() {
System.out.println("一天一苹果,医生远离我");
}
});
//lambda表达式
useEatable(() -> {
System.out.println("一天一苹果,医生远离我");
});
}
private static void useEatable(Eatable e) {
e.eat();
}
}
2.带参无返回值
package myLambdaDemo;
public interface Flyable {
void fly(String s);
}
package myLambdaDemo;
public class FlyableDemo {
public static void main(String[] args) {
//在主方法中调用useEatable方法
//匿名内部类
useFlyable(new Flyable() {
@Override
public void fly(String s) {
System.out.println(s);
System.out.println("飞机自驾游");
}
});
//lambda表达式
useFlyable((String s) -> {
System.out.println(s);
System.out.println("飞机自驾游");
});
}
private static void useFlyable(Flyable f) {
f.fly("风和日丽,晴空万里");
}
}
3.带参带返回值
package myLambdaDemo;
public interface Addable {
int add(int x, int y);
}
package myLambdaDemo;
public class AddableDemo {
public static void main(String[] args) {
//在主方法中调用useEatable方法
useAddable((int x, int y) -> {
return x + y;
});
}
private static void useAddable(Addable a) {
int sum = a.add(10, 20);
System.out.println(sum);
}
}