从Java看多核并发编程的2.0趋势
2.0时代的软件空前地活跃在人类生活的方方面面,从而带来了更多的计算量。因此2.0不可避免地对计算提出了新的需求、引发了新的思考,在这其中,多核带来的并行计算和并发编程无疑是最为深刻的一点。 我们都能依稀记得,在2005年Sun发布了代号为Tiger的Java 5。在其众多的特性之中, JVM的改进和java.util.concurrent包的出现无疑非常引人注目。改进后的JVM可以使用低层机器指令取代锁,精化了互斥访问的粒度,提高了系统的可伸缩性和活性。而concurrent包提供了大量线程和锁之上的并发抽象,比如线程池、闭锁、信号量、关卡等。这些可以帮助开发者快速地构建出高效、可伸缩的系统来。就在同一年,还发生了另一件影响深远的事件:AMD首次发布了其双核CPU,从而打响了AMD与Intel两大芯片厂商的多核之争。 当Java遇到多核 早在十多年前,IBM、Sun与HP就已经设计出了双核处理器,比如IBM于2001年推出的基于双核的POWER4处理器和Sun的UltraSPARC芯片,但这些双核处理器都是用于高端的RISC领域,价格高昂,被大众使用的X86并没有享受到它带来的性能优势。直到Intel和AMD相继推出自己的双核处理器后,X86领域才算是有了自己的多核架构。 所谓双核处理器,简单地说就是在一块CPU基板上集成两个处理器核心,并通过并行总线将各处理器核心连接起来