In this second edition, you will find complete coverage of concurrent programming using the Java'2 platform and new or expanded coverage of : Memory model. Cancellation. Portable parallel programming. Utility classes for concurrency control. The Java platform provides a broad and powerful set of APIs, tools, and technologies. One of its most powerful capabilities is the built in support for threads. This makes concurrent programming an attractive yet challenging option for programmers using the Java programming language. This book shows readers how to use the Java platform's threading model more precisely by helping them to understand the patterns and tradeoffs associated with concurrent programming. You will learn how to initiate, control, and coordinate concurrent activities using the class Java*lang*Thread, the keywords synchronized and volatile, and the methods " wait ", " notify ", and " notifyAll ". In addition, you will find detailed coverage of all aspects of concurrent programming, including such topics as confinement and synchronization, deadlocks and conflicts, state-dependent action control, asynchronous message passing and control flow, coordinated interaction, and how to structure web-based and computational services. The book targets intermediate to advanced programmers interested in mastering the complexities of concurrent programming. Taking a design pattern approach, the book offers standard design techniques for creating and implementing components that solve common concurrent programming challenges. The numerous code examples throughout help clarify the subtleties of the concurrent programming concepts discussed.