文档章节

Java 8 中你可能没听过的 10 个新特性

BestDay
 BestDay
发布于 2016/10/06 15:38
字数 1048
阅读 50
收藏 3

lambda表达式,一提到Java 8就只能听到这个,但这不过是其中的一个新功能而已,Java 8还有许多新的特性——有一些功能强大的新类或者新的用法,还有一些功能则是早就应该加到Java里了。

default方法

终止进程

第一个是isAlive()方法,有了它你可以判断进程是否还活着。第二个方法则更加强大,它叫destroyForcibly(),你可以用它来强制的杀掉一个已经超时或者不再需要的进程。

StampedLock

Java 8引入了一个新的读写锁,叫做StampedLock。它不仅更快,同时还提供了一系列强大的API来实现乐观锁,这样如果没有写操作在访问临界区域的话,你只需很低的开销就能获取到一个读锁。访问结束后你可以查询锁来判断这期间是否发生了写操作,如果有的话再选择进行重试,升级锁,或者放弃这个操作。

并发计数器

这是多线程程序会用到的另一个小工具。它提供了简单高效的新接口来实现多线程的并发读写计数器的功能,和AtomicInteger比起来,它要更快一些。相当赞的工具。

Optional

Java 8借鉴了Scala和Haskell,提供了一个新的Optional模板,可以用它来封装可能为空的引用。这绝不是终结空指针的银弹,更多只是使API的设计者可以在代码层面声明一个方法可能会返回空值,调用方应该注意这种情况。正因为这个,这只对新的API有效,前提是调用方不要让引用逃逸出封装类,否则的话引用可能会在外面被不安全的废弃掉。

万物皆可注解

还有一个小的改进就是现在Java注解可以支持任意类型了。之前只有像类和方法声明之类的才能使用注解。在Java 8里面,当类型转化甚至分配新对象的时候,都可以在声明变量或者参数的时候使用注解。这是Java为了更好地支持静态分析及检测工具(比如FireBug)而做的工作中的一部分。这是个很不错的特性,但是和Java 7的invokeDynamic一样,它的真正价值取决于社区以后如何去使用它。

数值溢出

这些方法早就该出现在Java的核心类库里了。我有个癖好就是去测试整型超出2^32时溢出的情况,搞出一些恶心的随机BUG来(怎么会得到这么奇怪的一个值?)。

目录遍历

遍历目录树这种事通常都得上Google搜下怎么实现(你很可能用的是Apache.FileUtils)。Java 8给Files类做了一次整容手术,增加了十个新的方法。我最喜欢的一个是walk()方法,它遍历目录后会创建出一个惰性的流(文件系统很大的情况下非常有用)。

增强的随机数生成

现在经常都在讨论密码或者密钥容易遭受攻击的事。程序的安全性是项很复杂的工程,并且很容易出错。这就是我为什么喜欢这个新的SecureRandom.getinstanceStrong()方法的原因,它能自动选择出当前JVM可用的最佳的随机数生成器。这样减少了获取失败的机率,同时也避免了默认的弱随机数生成器可能会导致密钥或者加密值容易被黑客攻破的问题。

Date.toInstant()

Java 8引入了一个新的日期API。这不难理解,因为现有的这个实在是太难用了。实际上Joda一直以来都是Java日期API的首选。不过尽管有了新的API,但仍有一个严重的问题——大量的旧代码和库仍然在使用老的API。

想要了解更多Java 8新特性还需要参考API

本文转载自:

共有 人打赏支持
BestDay
粉丝 1
博文 22
码字总数 3224
作品 0
丰台
程序员
私信 提问

暂无文章

Java开发中SpringCloud+Hystrix服务容错详细解析

Netflix Hystrix — 应对复杂分布式系统中的延时和故障容错 应用场景 分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务雪崩效应. 为了应对服务雪崩,...

金铭鼎IT教育
21分钟前
3
0
统计学习方法c++实现之一 感知机

  感知机      前言      最近学习了c++,俗话说‘光说不练假把式’,所以决定用c++将《统计学习方法》里面的经典模型全部实现一下,代码在这里,请大家多多指教。      感知机...

SEOwhywhy
23分钟前
1
0
python爬取虎嗅网数据

#!/usr/bin/env python# -*- coding:utf-8 -*-import requestsimport pymongofrom bs4 import BeautifulSoupclient = pymongo.MongoClient(host='localhost',port=27017)......

蜗牛奔跑
23分钟前
2
0
偷懒秘诀之变量篇

学习一个新语言的时候,总是苦恼的,例如:英文。但是作为主流语言,考试必考,又不能放弃,那我们就要选择一种好的学习方式啦~像是了解它的语法组成规则:“主谓宾定状补表同”。 JavaScri...

我的卡
24分钟前
3
0
锁分类(独占锁、分拆锁、分离锁、分布式锁)

在共享内存的多处理器体系架构中,每个处理器都拥有自己的缓存,并且定期地与主内存进行协调。 在不同的处理器架构中提供了不同级别的缓存一致性(Cache Coherence), 其中一部分只提供最小的...

Java搬砖工程师
25分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部