前言
在写作本书时,对于中端桌面系统来说,多核处理器正变得越来越便宜。无独有偶,许多开发团队也注意到,在他们的项目中出现了越来越多与线程有关的错误报告。在NetBeans开发者网站上的最近一次公告中,一位核心维护人员注意到,为了修复与线程相关的问题,在某个类中竟然打了14次补丁。Dion Almaer,这位TheServerSide网站的前编辑,最近(在经过一番痛苦的调试过程并最终发现了一个与线程有关的错误之后)在其博客上写道,在大多数Java程序中充满了各种并发错误,使得程序只有在“偶然的情况下”才能正常工作。
确实,在开发、测试以及调试多线程程序时存在着巨大的困难,因为并发性错误通常并不会以某种确定的方式显现出来。当这些错误出现时,通常是在最糟糕的时刻,例如在正式产品中,或者在高负载的情况下。
当开发Java并发程序时,所要面对的挑战之一就是:平台提供的各种并发功能与开发人员在程序中需要的并发语义并不匹配。在Java语言中提供了一些底层机制,例如同步和条件等待,但在使用这些机制来实现应用级的协议与策略时必须始终保持一致。如果没有这些策略,那么在编写程序时,虽然程序看似能顺利地编译和运行,但却总会出现各种奇怪的问题。许多介绍并发的其他书籍更侧重于介绍一些底层机制和API,而在设计级的策略和模式上叙述的不多。
Java 5.0在Java并发应用程序的开发方面进展巨大,它不仅提供了一些新的高层组件,还补充了一些底层机制,从而使得无论是新手级开发人员还是专家级开发人员都能够更容易地构建并发应用程序。本书的作者都是JCP专家组的主要成员,也正是该专家组编写了这些新功能。本书不仅描述了这些新功能的行为和特性,还介绍了它们的底层设计模式和促使它们被添加到平台库中的应用场景。
我们的目标是向读者介绍一些设计规则和思维模式,从而使读者能够更容易也更乐意去构建正确的以及高性能的Java并发类和应用程序。 ...
Get Java并发编程实战 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.