随笔分类 - Java8
摘要:概述 Java8之前用 Future 处理异步请求, 当你需要获取任务结果时, 通常的做法是调用 get(long timeout, TimeUnit unit) 此方法会阻塞当前的线程, 如果任务处理超时, 就会抛出一个 TimeoutException @Test public void tes
阅读全文
摘要:概述 在Java8之前, 我们一般都是使用 SimpleDateFormat 来解析和格式化日期时间, 但它是线程不安全的。 @Test public void test() { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"
阅读全文
摘要:概述 在Java8之前, 如果需要对一个变量做一次 null 检查, 通常会像下面这样写 如果业务比较复杂, 可能会像上面那样, 使用 if 语句进行多层嵌套, 后期难以扩展。 在Java8中新引入了一个 Optional 类, Optional 类会对可能为 null 值的变量进行建模, 这样你就
阅读全文
摘要:静态方法和默认方法 我们可以在 Comparator 接口的源码中, 看到大量类似下面这样的方法声明 其中 thenComparingInt() 就是一个默认方法, 它使用 default 关键字修饰。这是Java8引入的新功能: 接口中可以声明默认方法和静态方法。 默认方法带来的多继承问题 在此之
阅读全文
摘要:本文转载自 jdk8 Stream 解析2 - Spliterator分割迭代器。 概述 我们最为常见的流的产生方式是 collection.stream(), 你点开Stream()方法, 他是通过 Collection 这个上层接口两个java8 新增特性 default method 进行实现
阅读全文
摘要:概述 Stream流是Java8新引入的一个特性, 它允许你以声明性方式处理数据集合, 而不是像以前的指令式编程那样需要编写具体怎么实现。 比如炒菜, 用指令式编程需要编写具体的实现 而如果是Stream流这种声明式方式, 只需要一步操作 炒菜(); 就可以完成上面的炒菜功能。它关注的是我要做什么,
阅读全文
摘要:函数式编程 在介绍Lambda表达式之前, 首先需要引入另一个概念, 函数式编程。 函数式编程是一种编程范式, 也就是如何编写程序的方法论。它的核心思想是将运算过程尽量写成一系列嵌套的函数调用,关注的是做什么而不是怎么做,因而被称为声明式编程。以 Stateless(无状态)和 Immutable(
阅读全文