【IT168 信息化】
1、引言
根据IDC新近发布的预测,2009年几乎所有服务器、PC和笔记本电脑产品将全面实现多核化。随着这些硬件产品在多核技术上的逐渐就绪,如今整个IT业界面临的最大挑战就是如何将原先仅用于高端应用开发的并行编程方式推广到所有软件开发的过程中,以打造出更多支持多线程并行化运行的应用软件——尤其是处于关键地位的中间件,全面释放多核处理器的性能潜力。
目前的中间件产品,尽管大部分都是基于多线程或者多进程的,但是由于传统单线程编程的思维定势以及开发语言和工具的限制,使得软件应用限制了多核处理器性能的发挥。对此,微软首席研究官Craig Mundie称,软件行业所面临的核心挑战就是对多核处理器的编程。相比 C/C++ 程序员而言,利用 Java 编写多线程应用已经简单了很多。然而,多线程程序想要达到高性能仍然不是一件容易的事情。当CPU 进入多核时代之后,软件的性能调优就不再是一件简单的事情。没有并行化的程序在新的硬件上可能会运行得比从前更慢。
2、JSR-166并发包
自从Java发布以来,就提供了Thread类和低层次语言结构,例如synchronized、wait、notify和volatile等开发并发应用程序。但是,用这些特性来构建并发应用程序并不是简单的事情。开发者要面对以下的挑战:
线程死锁
线程竞争
编程复杂,容易出错
Java5.0提供了JSR-166(Java concurrency utilities),其提供大范围并发编程的重要类库和功能,大大简化了开发并发应用。
一些JSR-166的最显著的特点是:
使用标准的接口和框架自定义线程子系统
提供异步任务执行和调用,很方便的可以使用Future设计模式
提供非同步的高性能数据结构,如ConcurrentHashMap、ConcurrentLinkedQueue等
提供线程同步器,例如Semaphore, Mutexe, Barrier, Latche和 Exchanger等。
提供非阻塞的原子变量,如AtomicInteger等