Phasers
比CyclicBarrier更灵活,CyclicBarrier让所有线程在某个同步点原地踏步绕圈等待,可以控制多线程同时暂停等待,Phaser增强了CyclicBarrier几个特点:
允许计数超过时间变化
Phases能够计数并且线程能够知道这个计数值。
CyclicBarrier只允许一个同步action被注册, 而Phaser允许更加灵活动态的多个Action
终止 – 显式支持中断终止phase
多层phaser树
据说Phaser将是Java日常并行编程最重要的常用语法。
TransferQueue
比SynchronousQueue 性能在不公平模式unfair提高3倍,是公平faire模式14倍。因为SynchronousQueue用在很多核心普用库ThreadPoolExecutor中,所以Java 7提供的TransferQueue将大大提高所有使用ThreadPoolExecutor的程序性能。特别的是:当有新条目要被加入到队列中时,调用transfer将确保队列中所有条目被处理。Doug Lea成为capability-wise 容量智能化。
SynchronousQueue是使用两个队列来实现Producer和Consumer, 用一个锁保护这两个队列而LinkedTransferQueue使用非堵塞操作,避免序列化瓶颈。
Fork-join
提供了分而治之的并行计算模型,提供了大型数据集并行处理的方式。许多排序 过滤 搜索算法都能使用这个模型实现,有点类似小小Hadoop意思。
Fork-join已经成为其他并行语言 Scala, Clojure, Fortress, and Groovy (GPars) 重要语法。并且充分吸收了他们的优势。
其他Java 7并行计算有特点功能API: Fences ConcurrentReferenceHashMap Concurrent LRU –ParallelArray
原文:JSR 166 Concurrency Updates Hit JDK 7
Java 7 TransferQueue