Concurrency 和 Collections 更新
Java 5 在 JSR 166 下引入了 java.util.concurrent 包,而 Java 6 又通过 JSR 166x 对其进行了进一步的扩展。然后,Java 7 通过 JSR 166y 对并发性再次进行了更新,提供了一个全新的 fork-join 框架,即 JSR 总监 Doug Lea 口中的 “多核友好轻量级并行框架”。其他增强还包括 TransferQueue 和 Phaser。
1.Fork-join 框架
fork-join 框架的目标是为可分解为多个并行任务的高性能计算任务提供支持,从而允许有效利用多个处理器及内核。
典型示例演示,合并排序算法可以分解为多个并发任务。待排序数据将分解为可作为子任务独立排序的分段,同时子任务又有可能再度分解为更加小的子任务。子任务完成之后,整合结果(合并)。流程的原理是将特定任务分解为众多子任务,然后等待合并完成的任务。Java 7 中添加的 fork-join 框架提供了实现 fork-join 处理的基础设施,包括池处理和工作窃取,以降低等待其他子任务完成带来的影响。
2.TransferQueue
TransferQueue 是一种 BlockingQueue,但其不同之处在于提供了一个记录的交付服务。虽然将对象成功添加到队列中之后会返回一个将对象插入 BlockingQueue 的线程,但仅在另一个线程从队列中删除了对象之后才会返回负责将对象插入到 TransferQueue 中的线程。
3.Phaser
Phaser 类提供了一个全新的同步阻止对象,它与 Java 5 中已经引入的 CyclicBarrier 相类似,但提供了一些额外的特性。特别是动态更改注册方数量的能力。
IBM 提供的增值特性
除了每个新的 Java 平台发行版要强制更新的特性之外(由于JVM 规范和 Java 类库 API 的更新),每个 Java 供应商都允许向其 Java 功能包交付自己的增值特性。对于 IBM 的 Java 功能包,这些增值增强通常主要针对三个领域:性能、可靠性和可服务性。