3月8日java学习笔记
- 函数式接口(Functional Interface)
定义:仅含一个抽象方法的接口(可添加@FunctionalInterface注解)
@FunctionalInterface
interface Calculator {
int calculate(int a, int b);
default void log() { /* 默认方法不影响 */ }
}
// Lambda使用
Calculator add = (a, b) -> a + b;
2. 方法引用(Method Reference)
List
names.forEach(System.out::println); // 实例方法引用
names.sort(String::compareToIgnoreCase); // 类方法引用
3. Lambda实现原理
底层机制:通过invokedynamic指令动态生成匿名类
等价于匿名内部类(简化写法):
Runnable r = () -> System.out.println("Run");
// 等价于
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("Run");
}
};
线程通信:通过wait/notify实现条件等待,需配合锁机制使用。
并发工具类:
CountDownLatch:一次性等待
CyclicBarrier:可重复使用的屏障
ConcurrentHashMap:高效线程安全Map
Lambda本质:基于函数式接口的语法糖,依赖invokedynamic指令实现。
浙公网安备 33010602011771号