书籍介绍
这不是一本教你如何使用 `java.util.concurrent` 里各种类的速查手册,而是一套关于'为什么并发这么容易出错'的思维方式。作者反复强调一个朴素却极难做到的事实:在多线程世界里,'看起来对的'代码往往就是错的。可见性、原子性、逸出、不变性——这些概念贯穿全书,它们不是孤立的术语,而是相互咬合的链条:`final` 域如何保证初始化安全,不可变对象为何能免同步,`volatile` 又为何只是'弱化的同步'。书中最有争议也最见功力的地方,是它对 Java 内存模型的诚实处理:不回避、不简化,把'正确性必须从可见性推断出来'这一难点摊开给你。适合那些被'竞态条件'折磨过、想知道底层到底发生了什么的人;如果你只想要'照抄就能跑'的代码,它可能会让你觉得吃力。
作者简介
Brian Goetz is a software consultant with twenty years industry experience, with over 75 articles on Java development. He is one of the primary members of the Java Community Process JSR 166 Expert Group (Concurrency Utilities), and has served on numerous other JCP Expert Groups.
Tim Peierls is the very model of a modern multiprocessor, with BoxPop.biz, recording arts, and goings on theatrical. He is one of the primary members of the Java Community Process JSR 166 Expert Group (Concurrency Utilities), and has served on numerous other JCP Expert Groups.
Joshua Bloch is a principal engineer at Google and a Jolt Award-winner. He was previously a distinguished engineer at Sun Microsystems and a senior systems designer at Transarc. Josh led the design and implementation of numerous Java platform features, including JDK 5.0 language enhancements and the award-winning Java Collections Framework. He holds a Ph.D. in computer science from Carnegie Mellon University.
Joseph Bowbeer is a software architect at Vizrea Corporation where he specializes in mobile application development for the Java ME platform, but his fascination with concurrent programming began in his days at Apollo Computer. He served on the JCP Expert Group for JSR-166 (Concurrency Utilities).
David Holmes is director of DLTeCH Pty Ltd, located in Brisbane, Australia. He specializes in synchronization and concurrency and was a member of the JSR-166 expert group that developed the new concurrency utilities. He is also a contributor to the update of the Real-Time Specification for Java, and has spent the past few years working on an implementation of that specification.
Doug Lea is one of the foremost experts on object-oriented technology and software reuse. He has been doing collaborative research with Sun Labs for more than five years. Lea is Professor of Computer Science at SUNY Oswego, Co-director of the Software Engineering Lab at the New York Center for Advanced Technology in Computer Applications, and Adjunct Professor of Electrical and Computer Engineering at Syracuse University. In addition, he co-authored the book, Object-Oriented System Development (Addison-Wesley, 1993). He received his B.A., M.A., and Ph.D. from the University of New Hampshire.