[Java-基础] Java新特性
[Java-基础] Java新特性
Java 8 你知道有什么新特性?
Lambda表达式:允许将函数作为参数传递给方法,简化匿名内部类的写法。
Stream 流:提供链式处理集合的方式。
函数式接口:只有一个抽象方法的接口,可以使用
@FunctionalInterface注解标记。Optional 类:封装可能为
null的对象,避免空指针异常。方法引用:将现有方法作为Lambda进行处理。
接口可以有默认方法和静态方法,解决了接口修改兼容性问题。
重复注解:允许同一个注解在同一位置重复使用。
类型注解:注解可以使用在更多位置,如泛型、异常等。
CompletableFuture:增强异步编程支持。
Lambda 表达式了解吗?
Lambda本质其实就是匿名函数,允许将函数作为参数传递给方法。
底层原理:
- 它和匿名内部类不同,不会生成.class文件,而是通过
invokedynamic指令,在运行时动态生成类。
Java中stream的API介绍一下
Stream API 的本质是简化集合操作。它引入了声明式编程和内部迭代的思想
相比于传统迭代方式,首先它会延迟执行,只有在终止操作(如,collect)时才会执行中间操作(如,filter);
然后它不会修改原数据,而是返回新的结果,避免了可能的线程安全问题;
最后它支持并行处理,底层基于Fork/Join框架,在大规模数据处理时性能更优。
Stream流的并行API是什么?
是parallelStream()方法。
并行流概念,就是将源数据分为多个子流对象进行多线程操作,然后将处理的结果再汇总为一个流对象
底层基于 Fork/Join 框架 实现的,默认使用ForkJoinPool线程池适用于CPU密集型任务,对于IO密集型任务则不建议使用。
completableFuture怎么用的?
Java中异步的实现方式有两种:Future:传统的 Future 只能被动地通过 get() 阻塞获取结果,无法感知任务完成。CompletableFuture:而 CompletableFuture 是 Future的增强,它支持异步回调和链式编程,能让我们以同步的代码风格编写异步逻辑,有效解决了‘回调地狱’并实现了灵活的任务编排。
具体怎么用
- 创建异步任务:使用
supplyAsync或 `runAsync 提交任务,并传入线程池。 - 处理结果:任务完成后,用
thenApply转换结果,或用thenAccept消费结果。 - 任务编排:可以使用
thenCompose连接多个异步任务,用allOf等待多个任务完成,或用thenCombine合并多个任务结果。