浅谈JDK7和JDK8的区别在哪

网友投稿 750 2023-01-14

浅谈JDK7和JDK8的区别在哪

浅谈JDK7和JDK8的区别在哪

一、接口中的default方法

一般来说接口中的方法都是不实现的,基本通过实现类来实现方法。但是jdk8中提供了一种被default修饰的方法,可以直接在接口中进行实现。

二、lambda表达式

jdk8引入了lambda表达式,也可称为closure(闭包),通常是在需要一个函数,但又不想费神去命名一个函数的场合下使用,也就是指匿名函数。

lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。

由于其几乎被所有主流开发语言支持。是java8新引入的一种语法,是一种紧凑的传递代码的方式。使用lambda表达式可以使代码变的更加简洁紧凑。

三、函数式接口

函数式接口的引入是为了函数式编程的,函数式编程往往依赖于lambda表达式。

定义函数式接口有两个步骤:

1)确保接口中有且仅有一个抽象方法:

2)使用注解@http://FunctionalInterface修饰接口

四、StreamAPI

JDK8中引入了StreamAPI,对于学过Flink或Spark的学者应该对此比较熟悉,其实就是类似于一种流式的数据处理,从dataSource到中间的operator操作,再到最后的dataSink。

Stream的中间操作有map,filter等操作。而流式的数据处理往往就是通过函数式编程实现的。

五、移出永久代,元空间替换

JDK7使用永久代存储类的元数据,JDK8使用元空间存储类的元数据。元空间和永久代都是用来存储class相关信息,包括class对象的Method,Field等,元空间和永久代其实都是方法区的实现,只是实现有所不同,所以说方法区其实只是一种JVM的规范。

区别:

两者最大的区别是元空间使用本地内存,而永久代使用的是JVM的内存。

元空间优势:

优势就是元数据分配只受本地内存大小的限制。本地内存剩余多少理论上metaspace就可以有多大,这解决了空间不足的问题,不http://过也不可能任其无限壮大,JVM默认在运行时会根据需要动态的设置其大小

六、HashMap中的优化

1)增加红黑树

2)解决jdk1.7多线程下的死循环:

扩容使用尾插法,抛弃头插法

3)rehash的优化:

jdk7扩容的rehash是重新计算桶的位置,而jdk8则进行了优化,不需要进行重新计算。

七、currentHashMap的优化

jdk7是使用分段锁实现线程安全,jdk则使用sy关键字和大量的CAS操作实现。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小红书app运营模式介绍(小红书平台运营机制)
下一篇:企业app开发技术(企业app开发技术有哪些)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~