
Java8新特性
Java8新特性
猿敲月下码
开源软件作者
展开
-
一起来学Java8(九)——CompletableFuture
同步异步计算机技术发展迅猛,不管是在软件还是硬件方面都发展的非常快,电脑的CPU也在更新换代,强劲的CPU可以承担更多的任务。如果程序一直使用同步编程的话,那么将会浪费CPU资源。举个列子,一个CPU有10个通道,如果所有程序都走一个通道,那么剩余9个通道都是空闲的,那这9个通道都浪费掉了。如果使用异步编程,那么其它9个通道都可以利用起来了,程序的吞吐量也上来了。也就是说要充分利用CPU资源,...原创 2020-03-22 08:44:57 · 610 阅读 · 1 评论 -
一起来学Java8(八)——ForkJoin
在一起来学Java8(七)——Stream中我们了解了reduce的用法,其中并行流的底层是使用了分支/合并框架。分支/合并框架的核心思想是把一个大的任务拆分成多个子任务,然后把每个子任务的执行结果整合起来,返回一个最终结果。ForkJoinPool分支/合并框架的核心类是java.util.concurrent.ForkJoinPool,从名称中可以看到它是一个线程池,线程数量是默认处理器...原创 2020-02-27 10:51:19 · 1770 阅读 · 0 评论 -
一起来学Java8(七)——Stream(下)
在一起来学Java8(七)——Stream(中)我们学习了Stream.collect的用法,今天我们来学习下Stream.reduce的用法。reduce操作可以理解成对Stream中元素累计处理,它有三个重载方法。重载1:Optional<T> reduce(BinaryOperator<T> accumulator);重载2:T reduce(T identi...原创 2019-11-13 11:46:36 · 380 阅读 · 0 评论 -
一起来学Java8(七)——Stream(中)
在一起来学Java8(七)——Stream(上)中我们了解到了Stream对象的常用方法以及用法。现在一起来深入了解下Stream.collect()方法的使用collect基本用法collect意思为收集,它是对Stream中的元素进行收集和归纳,返回一个新的集合对象。先来看一个简单例子:public class CollectTest { @Data @AllArgsConstru...原创 2019-11-13 11:44:56 · 381 阅读 · 0 评论 -
一起来学Java8(七)——Stream(上)
从Java8开始,新增了一个java.util.stream包,这个包下的类和接口用来处理集合中的元素,在这个包下面有一个Stream接口,我们主要使用这个接口来对集合进行操作。创建Stream首先来看下创建Stream有哪几种方式。使用Stream自带的静态方法生成Stream对象,常见的静态方法有以下几个:Stream.of(T)Stream.of(T… values)Strea...原创 2019-11-12 08:59:37 · 1048 阅读 · 0 评论 -
一起来学Java8(六)——Optional
Optional类是Java8新增的一个类,其作用可以有效避免空指针异常。Optional类的代码比较简单,很容易就能看懂,其实质就是一个辅助类,把需要处理的对象做了一层包装,然后再使用Optional中的方法时,可以有效得判断处理对象是否为空,从而做出正确判断。接下来我们看下如何使用Optional。创建Optional创建Optional有3种方式:Optional.empty()...原创 2019-11-11 09:57:50 · 637 阅读 · 0 评论 -
一起来学Java8(五)——接口默认方法
Java8新加入一个特性,允许在接口方法中给定一个默认实现。前提是在方法前面加一个default关键字。public interface InterfaceMethod { default void say() { System.out.println("hello"); } default int getAge() { return 1; }}这种设计看起来是有点违背...原创 2019-11-08 17:18:35 · 1410 阅读 · 0 评论 -
一起来学Java8(四)——复合Lambda
在一起来学Java8(二)——Lambda表达式中我们学习了Lambda表达式的基本用法,现在来了解下复合Lambda。Lambda表达式的的书写离不开函数式接口,复合Lambda的意思是在使用Lambda表达式实现函数式接口抽象方法后,还可以再次调用接口的其它方法,因为从Java8开始,接口中可以包含默认实现的方法。关于接口默认实现方法将会在后面章节详细阐述。常见的复合Lambda常见的有以...原创 2019-11-07 09:07:11 · 764 阅读 · 0 评论 -
一起来学Java8(三)——方法引用
在一起来学Java8(一)——函数式编程中有一个简单的函数式编程的例子:import java.util.function.Consumer;class Person { public static void sayHello(String name) { System.out.println("hello " + name); }}public cla...原创 2019-11-06 15:12:38 · 259 阅读 · 0 评论 -
一起来学Java8(二)——Lambda表达式
Lambda简介什么是Lambda表达式,简单的说是一种匿名函数表达方式。因此Lambda表达式本质是个函数,只不过没有函数名称。Lambda表达式具有以下特点:匿名,它没有函数名称本质是个函数,除了函数名,它有参数列表、函数内容(方法体)、返回类型简洁,有时候可以省略参数的类型可传递,Lambda表达式可以当做一个变量进行存储Lambda的基本语法是:(参数列表) ->...原创 2019-11-06 15:11:08 · 268 阅读 · 0 评论 -
一起来学Java8(一)——函数式编程
在这篇文章中,我们将了解到在Java8下如何进行函数式编程。函数式编程所谓的函数式编程就是把函数名字当做值进行传递,然后接收方拿到这个函数名进行调用。首先来看下JavaScript如何进行函数调用var Person = { sayHello: function(name) { alert('hello ' + name); }};function w...原创 2019-11-06 15:06:19 · 418 阅读 · 0 评论