纷享Java小细节【1】 2019-07-16
Java 8 中 stream 效率如何?
Stream 操作较 for 循环更简洁直观,并提供了更多的 API 供过滤、归并等操作。传统 for 循环在数据量较小的情况下效率与 stream 差别不大。多核 CPU 下, parallelStream 效率更高。
Lombok 设置默认值
字段赋值时,如果将某字段赋值为 null ,则接口返回时整个字段都丢失,与接口定义矛盾。前端建议增加默认值。
- @Builder.Default 注解添加在需要设置默认值的属性上
- 给属性赋值,赋值内容为需要设定的默认值
- 使用 lombok.Builder 创建对象
InterruptedException 应该如何处理?
- Thread.interrupt()方法和InterruptedException异常的关系
- Thread.interrupt() 后线程是什么状态
- interrupt用途?unBlock操作,支持任务cancel, 数据清理
- 通过 Runtime.getRuntime().addShutdownHook 添加线程池清理工作
- 线程池 shutdown 和 shutdownNow 区别? shutdown 方法确保无新任务提交,进行中的任务会继续执行。
- awaitTermination 与 shutdown 方法配合使用
后续了解
- Lombok 逐步淘汰
- Stream 底层实现,多线程如何实现