Java Concurrency in Practice

Java Concurrency in Practice
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
2006-05
ISBN: 9780321349606
装帧: 其他
开本: 其他
纸张: 其他
7人买过
  • 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
零基础法语入门绘本 小小法语
Brian Chan
Java Concurrency in Practice
忙碌的动物
Britta Teckentrup
Java Concurrency in Practice
忙碌的交通
Britta Teckentrup
Java Concurrency in Practice
忙碌的小镇
Britta Teckentrup
Java Concurrency in Practice
忙碌的恐龙
Britta Teckentrup
Java Concurrency in Practice
英国皇家园艺学会DK园艺百科全书(典藏版全彩)
Brickell(克里斯托夫·布里克尔) 著;[英]Christopher、王晨、马洪峥 译
Java Concurrency in Practice
Terraform:多云、混合云环境下实现基础设施即代码(第2版)
Brikman(叶夫根尼・布里克曼) 著;[美]Yevgeniy、白宇 译
Java Concurrency in Practice
The Promise of Artificial Intelligence:Reckoning and Judgment
Brian Cantwell Smith
Java Concurrency in Practice
Three Types of Solitude
Brian Aldiss
Java Concurrency in Practice
DefiningTwilight:VocabularyWorkbookforUnlockingtheSAT,ACT,GED,andSSAT[拍卖获利手册]
Brian Leaf 著
Java Concurrency in Practice
RakketyTam
Brian Jacques 著;David Elliott 绘
Java Concurrency in Practice
Drawing the Draped Figure
Bridgman, George B