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
(现代人小丛书)叙事的胜利——在大众文化时代讲故事
[加拿大]罗伯特·弗尔福德 著;李磊 译
Java Concurrency in Practice
我心深处(美国电影大师伍迪·艾伦权威访谈录)
[美]伍迪·艾伦(Woody Allen) 著;博集天卷 出品
Java Concurrency in Practice
蓝图(好社会的八大特征)
尼古拉斯·克里斯塔基斯(Nicholas A.Christakis) 著;贾拥民 译
Java Concurrency in Practice
理想的工作间
[韩]金霞娜 著;刘欣、全毅 译
Java Concurrency in Practice
印学百咏
何积石 著
Java Concurrency in Practice
科学素养:概念、情境与影响
肯妮.A.迪布纳 著;肯妮·A. 迪布纳(主编) 编;凯瑟琳.E.斯诺、凯瑟琳·E. 斯诺、裴新宁、郑太年 译
Java Concurrency in Practice
女性的时刻
梅琳达·盖茨 著
Java Concurrency in Practice
美丽的数学(一本独具特色的数学科普书)
[美]爱德华·沙伊纳曼(Edward Scheinerman) 著;博集天卷 出品
Java Concurrency in Practice
万千心理·游戏的力量:58种经典儿童游戏治疗技术
Cangelosi 著;[美]Charles、E.Schaefer、[美]Donna、张琦云、吴晨骏 译
Java Concurrency in Practice
疫苗竞赛:人类对抗疾病的代价(比尔·盖茨年度推荐!解答疫苗困惑。医学新闻报道的典范之作!《科学》《自然》期刊权威推荐)
梅雷迪丝·瓦德曼 著;罗爽 译
Java Concurrency in Practice
思考的艺术(第11版)·英文版
[美]文森特·赖安·拉吉罗(Vincent Ryan Ruggiero)