Java Concurrency in Practice

Java Concurrency in Practice
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
出版社: Addison-Wesley Professional
2006-05
ISBN: 9780321349606
装帧: 其他
开本: 其他
纸张: 其他
  • This book covers:
    Basic concepts of concurrency and thread safety
    Techniques for building and composing thread-safe classes
    Using the concurrency building blocks in java.util.concurrent
    Performance optimization dos and don'ts
    Testing concurrent program 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. Listings     xii
    Preface     xvii
    Chapter 1: Introduction     1
    1.1  A (very) brief history of concurrency       1
    1.2  Benefits of threads      3
    1.3  Risks of threads       5
    1.4  Threads are everywhere       9
    Part I: Fundamentals     13
    Chapter 2: Thread Safety     15
    2.1  What is thread safety?      17
    2.2  Atomicity     19
    2.3  Locking     23
    2.4  Guarding state with locks      27
    2.5  Liveness and performance       29
    Chapter 3: Sharing Objects     33
    3.1  Visibility      33
    3.2  Publication and escape       39
    3.3  Thread confinement       42
    3.4  Immutability       46
    3.5  Safepublication       49
    Chapter 4: Composing Objects     55
    4.1  Designing a thread-safe class      55
    4.2  Instance confinement      58
    4.3  Delegating thread safety      62
    4.4  Adding functionality to existing thread-safe classes       71
    4.5  Documenting synchronization policies       74
    Chapter 5: Building Blocks     79
    5.1  Synchronized collections       79
    5.2  Concurrent collections     84
    5.3  Blocking queues and the producer-consumer pattern     87
    5.4  Blocking and interruptible methods     92
    5.5  Synchronizers     94
    5.6  Building an efficient, scalable result cache      101
    Part II: Structuring Concurrent Applications     111
    Chapter 6: Task Execution     113
    6.1  Executing tasks in threads      113
    6.2  The Executor framework     117
    6.3  Finding exploitable parallelism      123
    Chapter 7: Cancellation and Shutdown     135
    7.1  Task cancellation      135
    7.2  Stopping a thread-based service       150
    7.3  Handling abnormal thread termination       161
    7.4  JVM shutdown      164
    Chapter 8: Applying Thread Pools     167
    8.1  Implicit couplings between tasks and execution policies     167
    8.2  Sizing thread pools      170
    8.3  Configuring ThreadPoolExecutor     171
    8.4  Extending ThreadPoolExecutor     179
    8.5  Parallelizing recursive algorithms     181
    Chapter 9: GUI Applications     189
    9.1  Why are GUIs single-threaded?      189
    9.2  Short-running GUI tasks     192
    9.3  Long-running GUI tasks     195
    9.4  Shared data models     198
    9.5  Other forms of single-threaded subsystems      202
    Part III: Liveness, Performance, and Testing     203
    Chapter 10: Avoiding Liveness Hazards     205
    10.1  Deadlock     205
    10.2  Avoiding and diagnosing deadlocks     215
    10.3  Other liveness hazards      218
    Chapter 11: Performance and Scalability     221
    11.1  Thinking about performance      221
    11.2  Amdahl's law     225
    11.3  Costs introduced by threads     229
    11.4  Reducing lock contention      232
    11.5  Example: Comparing Map performance     242
    11.6  Reducing context switch overhead      243
    Chapter 12: Testing Concurrent Programs     247
    12.1  Testing for correctness     248
    12.2  Testing for performance      260
    12.3  Avoiding performance testing pitfalls       266
    12.4  Complementary testing approaches     270
    Part IV: Advanced Topics     275
    Chapter 13: Explicit Locks     277
    13.1  Lock and ReentrantLock      277
    13.2  Performance considerations      282
    13.3  Fairness      283
    13.4  Choosing between synchronized and ReentrantLock      285
    13.5  Read-write locks     286
    Chapter 14: Building Custom Synchronizers     291
    14.1  Managing state dependence      291
    14.2  Using condition queues      298
    14.3  Explicit condition objects     306
    14.4  Anatomy of a synchronizer     308
    14.5  AbstractQueuedSynchronizer      311
    14.6  AQS in java.util.concurrent synchronizer classes      314
    Chapter15: Atomic Variables and Nonblocking Synchronization     319
    15.1  Disadvantages of locking     319
    15.2  Hardware support for concurrency      321
    15.3  Atomic variable classes       324
    15.4  Nonblocking algorithms      329
    Chapter 16: The Java Memory Model     337
    16.1  What is a memory model, and why would I want one?       337
    16.2  Publication     344
    16.3  Initialization safety     349
    Appendix A: Annotations for Concurrency     353
    A.1  Class annotations     353
    A.2  Field andmethod annotations      353
    Bibliography     355
    Index     359
  • 内容简介:
    This book covers:
    Basic concepts of concurrency and thread safety
    Techniques for building and composing thread-safe classes
    Using the concurrency building blocks in java.util.concurrent
    Performance optimization dos and don'ts
    Testing concurrent program
  • 作者简介:
    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.
  • 目录:
    Listings     xii
    Preface     xvii
    Chapter 1: Introduction     1
    1.1  A (very) brief history of concurrency       1
    1.2  Benefits of threads      3
    1.3  Risks of threads       5
    1.4  Threads are everywhere       9
    Part I: Fundamentals     13
    Chapter 2: Thread Safety     15
    2.1  What is thread safety?      17
    2.2  Atomicity     19
    2.3  Locking     23
    2.4  Guarding state with locks      27
    2.5  Liveness and performance       29
    Chapter 3: Sharing Objects     33
    3.1  Visibility      33
    3.2  Publication and escape       39
    3.3  Thread confinement       42
    3.4  Immutability       46
    3.5  Safepublication       49
    Chapter 4: Composing Objects     55
    4.1  Designing a thread-safe class      55
    4.2  Instance confinement      58
    4.3  Delegating thread safety      62
    4.4  Adding functionality to existing thread-safe classes       71
    4.5  Documenting synchronization policies       74
    Chapter 5: Building Blocks     79
    5.1  Synchronized collections       79
    5.2  Concurrent collections     84
    5.3  Blocking queues and the producer-consumer pattern     87
    5.4  Blocking and interruptible methods     92
    5.5  Synchronizers     94
    5.6  Building an efficient, scalable result cache      101
    Part II: Structuring Concurrent Applications     111
    Chapter 6: Task Execution     113
    6.1  Executing tasks in threads      113
    6.2  The Executor framework     117
    6.3  Finding exploitable parallelism      123
    Chapter 7: Cancellation and Shutdown     135
    7.1  Task cancellation      135
    7.2  Stopping a thread-based service       150
    7.3  Handling abnormal thread termination       161
    7.4  JVM shutdown      164
    Chapter 8: Applying Thread Pools     167
    8.1  Implicit couplings between tasks and execution policies     167
    8.2  Sizing thread pools      170
    8.3  Configuring ThreadPoolExecutor     171
    8.4  Extending ThreadPoolExecutor     179
    8.5  Parallelizing recursive algorithms     181
    Chapter 9: GUI Applications     189
    9.1  Why are GUIs single-threaded?      189
    9.2  Short-running GUI tasks     192
    9.3  Long-running GUI tasks     195
    9.4  Shared data models     198
    9.5  Other forms of single-threaded subsystems      202
    Part III: Liveness, Performance, and Testing     203
    Chapter 10: Avoiding Liveness Hazards     205
    10.1  Deadlock     205
    10.2  Avoiding and diagnosing deadlocks     215
    10.3  Other liveness hazards      218
    Chapter 11: Performance and Scalability     221
    11.1  Thinking about performance      221
    11.2  Amdahl's law     225
    11.3  Costs introduced by threads     229
    11.4  Reducing lock contention      232
    11.5  Example: Comparing Map performance     242
    11.6  Reducing context switch overhead      243
    Chapter 12: Testing Concurrent Programs     247
    12.1  Testing for correctness     248
    12.2  Testing for performance      260
    12.3  Avoiding performance testing pitfalls       266
    12.4  Complementary testing approaches     270
    Part IV: Advanced Topics     275
    Chapter 13: Explicit Locks     277
    13.1  Lock and ReentrantLock      277
    13.2  Performance considerations      282
    13.3  Fairness      283
    13.4  Choosing between synchronized and ReentrantLock      285
    13.5  Read-write locks     286
    Chapter 14: Building Custom Synchronizers     291
    14.1  Managing state dependence      291
    14.2  Using condition queues      298
    14.3  Explicit condition objects     306
    14.4  Anatomy of a synchronizer     308
    14.5  AbstractQueuedSynchronizer      311
    14.6  AQS in java.util.concurrent synchronizer classes      314
    Chapter15: Atomic Variables and Nonblocking Synchronization     319
    15.1  Disadvantages of locking     319
    15.2  Hardware support for concurrency      321
    15.3  Atomic variable classes       324
    15.4  Nonblocking algorithms      329
    Chapter 16: The Java Memory Model     337
    16.1  What is a memory model, and why would I want one?       337
    16.2  Publication     344
    16.3  Initialization safety     349
    Appendix A: Annotations for Concurrency     353
    A.1  Class annotations     353
    A.2  Field andmethod annotations      353
    Bibliography     355
    Index     359
查看详情
好书推荐 / 更多
Java Concurrency in Practice
宇宙的起源:一本人人读得懂的宇宙学科普读物,为你揭晓宇宙起源之谜!
[英]约翰·巴罗 著;黄静 译;湛庐文化 出品
Java Concurrency in Practice
理想国译丛044:救赎者:拉丁美洲的面孔与思想
[墨西哥]恩里克·克劳泽
Java Concurrency in Practice
更大的希望
庄亦男 、后浪 译;[奥地利]伊尔泽·艾兴格
Java Concurrency in Practice
梦室:大卫·林奇传
克里斯汀·麦肯纳 著;大卫·林奇、胡阳潇潇 译
Java Concurrency in Practice
找工作:关系人与职业生涯的研究(薄荷实验)
[美]马克·格兰诺维特
Java Concurrency in Practice
从绿到金:打造企业增长与生态发展的共生模式
丹尼尔·埃斯蒂(Daniel C. Esty);安德鲁·温斯顿
Java Concurrency in Practice
林纾集(全十册)
江中柱 ;闵定庆 ; 李小荣;汤江浩; 于英丽
Java Concurrency in Practice
理性思辨:如何在非理性世界里做一个理性思考者
[英]朱立安·巴吉尼(Julian Baggini) 著;王尔笙 译
Java Concurrency in Practice
理性与本能:大脑的神奇平衡术
[英]彼得·C.惠布罗(Peter C.Whybrow) 著;姚育红、甘露 译
Java Concurrency in Practice
拉康传:重现拉康混乱、固执、反叛的一生,勾勒20世纪法国思想界激动人心的一段历史。
[法]伊丽莎白卢迪内斯库 著;王晨阳 译
Java Concurrency in Practice
青草图书馆:一部情感的历史
阿兰·科尔班(Alain Corbin) 著;付金鑫 译
Java Concurrency in Practice
土摩托看世界:在旅行中寻找人生坐标(二版)
袁越