jdk8
wangyunpeng0319
这个作者很懒,什么都没留下…
展开
-
LongAdder
前言 最近在看到不少框架里面使用到了LongAdder这个类,而并非AtomicLong,很是困惑,于是专门看了LongAdder的源码,总结一下这两个的区别。 AtomicLong原理 就像我们所知道的那样,AtomicLong的原理是依靠底层的cas来保障原子性的更新数据,在要添加或者减少的时候,会使用死循环不断地cas到特定的值,从而达到更新数据的目的。那么Long转载 2017-12-27 16:52:54 · 5197 阅读 · 1 评论 -
java8新特性3--lambda表达式
开发中,经常需要给一个方法传递一个接口类型的参数,为了传递不同的行为,我们需要创建不同的实现类,而通常这些类没什么重用价值,只使用一次就没用了。 考虑一个从一堆苹果中筛选符合条件的苹果的场景。 为了更好的应对需求变更,一个比较好的解决办法是将过滤的标准抽象出来,我们先定义一个接口作为抽象的选择标准. public interface ApplePredicate{ boolean tes转载 2018-01-04 11:04:06 · 557 阅读 · 0 评论 -
java8新特性2--注解变化
Java 8在两个方面对注解机制进行了改进,分别为: 你现在可以定义重复注解 你可以为任何目标添加注解 Java中的注解是一种对程序元素进行配置,提供附加信息的机制。 重复注解 之前版本的Java禁止对同样的注解类型声明多次。由于这个原因,下面的第二句代码是无效的。 @interface Author { String name(); } @Author(name="Raoul") @Aut转载 2018-01-04 11:03:33 · 452 阅读 · 0 评论 -
java8新特性1--接口的变化
接口的变化 在Java8之前,Java中,实现接口的类必须为接口中定义的每个方法提供一个实现,或者从父类中继承它的实现。 但是,一旦类库的设计者需要更新接口,向其中加入新的方法,这种方式就会出现问题。 现实情况是,现存的实体类往往不在接口设计者的控制范围之内,这些实体类为了适配新的接口约定也需要进行修改。 由于Java 8的API在现存的接口上引入了非常多的新方法,这种变化带来的问题也愈加严重。转载 2018-01-04 11:02:56 · 492 阅读 · 0 评论 -
Java8新特性10--其他类库的变化
Map public static void main(String[] arg) { Map map=new HashMap(); //如果key不存在返回默认值 System.out.println(map.getOrDefault("a",123)); map.put("a",123); //将lambd转载 2018-01-04 11:02:12 · 351 阅读 · 0 评论 -
Java8新特性4--方法引用
方法引用 lambda 方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它们。在一些情况下, 比起使用Lambda表达式,它们更易读,感觉也更自然。 方法引用可以被看作仅仅调用特定方法的Lambda的一种快捷写法。 它的基本思想是,如果一个Lambda代表的只是“直接调用这个方法”,那最好还是用名称来调用它,而不是去描述如何调用它。 事实上,方法引用就是让你根据已有的方转载 2018-01-04 11:00:43 · 267 阅读 · 0 评论 -
Java8新特性6--使用集合流API
使用集合的流式API 直接上代码了,常用api都有了,要点都在注释中 苹果类: package java8.stream; /** * @author qiang.xie * @date 2017/5/4 */ public class Apple { private int weight; private String color; private Stri转载 2018-01-04 10:58:38 · 259 阅读 · 0 评论 -
Java8新特性8--使用CompletableFuture构建异步应用
使用CompletableFuture构建异步应用 Future 接口的局限性 future接口可以构建异步应用,但依然有其局限性。它很难直接表述多个Future 结果之间的依赖性。实际开发中,我们经常需要达成以下目的: 将两个异步计算合并为一个——这两个异步计算之间相互独立,同时第二个又依赖于第 一个的结果。 等待 Future 集合中的所有任务都完成。 仅等待 Future 集合中最快结束转载 2018-01-04 10:57:14 · 482 阅读 · 0 评论 -
Java8新特性9--新的日期和时间API
新的日期时间处理API 从Java8开始,原生的Java API中已经能提供高质量的日期和时间支持,java.time包中整合了很多Joda-Time的特性。 LocalDate和LocalTime 开始使用新的日期和时间API时,你最先碰到的可能是LocalDate类。该类的实例是一个不可变对象,它只提供了简单的日期,并不含当天的时间信息。另外,它也不附带任何与时区相关的信息。 你可以通过静态工转载 2018-01-04 10:55:55 · 1309 阅读 · 0 评论 -
Java8新特性7--使用Optional解决空指针问题
身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法。我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数。这正是一些类似Guava的外部API试图解决的问题。一些JVM编程语言比如Scala、Ceylon等已经将对在核心API中解决了这个问题。在我的前一篇文章中,介绍了Scala是如何解决了这个问题。转载 2017-12-14 11:13:32 · 1001 阅读 · 0 评论 -
Java8新特性5--流式API
流式处理 流是一系列数据项,一次只生成一项。程序可以从输 入流中一个一个读取数据项,然后以同样的方式将数据项写入输出流。一个程序的输出流很可能是另一个程序的输入流。 流的特点 元素序列——就像集合一样,流也提供了一个接口,可以访问特定元素类型的一组有序值。集合讲的是数据,流讲的是计算。 源——流会使用一个提供数据的源,如集合、数组或输入/输出资源。 请注意,从有序集 合生成流时会保留原有的顺序。转载 2018-01-04 11:07:36 · 3711 阅读 · 0 评论