Buy New
-50%
$37.62$37.62
FREE delivery Sunday, October 11
Ships from: Amazon Sold by: RumiLLC
Used - Very Good
$5.87$5.87
FREE delivery October 15 - 20
Ships from: GreatBookDealz Sold by: GreatBookDealz
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Follow the author
OK
Concurrent Programming in Java : Design Principles and Pattern, 2nd Edition
Purchase options and add-ons
- One of Java's most powerful capabilities is its built-in support for concurrent programming, a design technique in which multiple concurrent activities-threads take place inside a single Java program. Thread programming enables developers to design applications that are more responsive to user demands, faster, and more easily controlled.
- This book offers comprehensive coverage of this vital aspect of the Java language. The book is completely up-to-date with the new thread model that is now incorporated into the most recent version of the Java Virtual Machine. All Java programmers interested in doing concurrent programming must understand these new concepts. The book approaches the topic from a design pattern point of view. It introduces and summarizes Java's concurrency support, shows readers how to initiate, control, and coordinate concurrent activities, and offers numerous recipe-like techniques for designing and implementing Java structures that solve common concurrent programming challenges. Specifically, the book presents important strategies for avoiding the inconsistencies that can crop up in multi-threaded programs, addresses the concept of "liveness"-how to ensure that all threads in use are kept active simultaneously, examines state-dependent action, and demonstrates effective methods for handling user requests in a multi-threaded environment.
- ISBN-100201310090
- ISBN-13978-0201310092
- Edition2nd
- PublisherAddison-Wesley Professional
- Publication dateOctober 25, 1999
- LanguageEnglish
- Dimensions7.3 x 1 x 9.1 inches
- Print length432 pages
Frequently bought together

Frequently purchased items with fast delivery
- Modern C++ Design: Generic Programming and Design Patterns Applied (C++ In-Depth Series)Debbie LaffertyPaperbackFREE Shipping by AmazonGet it as soon as Tuesday, Oct 13Only 1 left in stock - order soon.
- Programming: Principles and Practice Using C++ (C++ In-depth)PaperbackFREE Shipping by AmazonGet it as soon as Sunday, Oct 11
- C++ Move Semantics - The Complete Guide: First EditionPaperbackFREE Shipping on orders over $35 shipped by AmazonGet it as soon as Sunday, Oct 11
- Effective C, 2nd Edition: An Introduction to Professional C ProgrammingPaperbackFREE Shipping on orders over $35 shipped by AmazonGet it as soon as Sunday, Oct 11
- Understanding Distributed Systems, Second Edition: What every developer should know about large distributed applicationsPaperbackFREE Shipping on orders over $35 shipped by AmazonGet it as soon as Sunday, Oct 11
Customers also bought or read
- Fluent Python: Clear, Concise, and Effective Programming
Paperback$43.99$43.99FREE delivery Sun, Oct 11 - Operating Systems: Three Easy Pieces#1 Best SellerComputer Operating Systems Theory
Paperback$28.27$28.27Delivery Sun, Oct 11 - Java Threads: Understanding and Mastering Concurrent Programming
Paperback$9.90$9.90$3.99 delivery Sat, Oct 17 - Modern Concurrency in Java: Virtual Threads, Structured Concurrency, and Beyond
Paperback$44.31$44.31FREE delivery Sun, Oct 11 - Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)
Paperback$30.29$30.29Delivery Sun, Oct 11 - Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software 2nd Edition
Paperback$30.68$30.68Delivery Mon, Oct 12 - A Philosophy of Software Design, 2nd Edition#1 Best SellerComputer Systems Analysis & Design
Paperback$22.04$22.04Delivery Sun, Oct 11 - Java Performance: In-Depth Advice for Tuning and Programming Java 8, 11, and Beyond
Paperback$38.58$38.58FREE delivery Sun, Oct 11 - Systems Performance (Addison-Wesley Professional Computing Series)
Paperback$57.41$57.41FREE delivery Sun, Oct 11 - Practical Packet Analysis, 3rd Edition: Using Wireshark to Solve Real-World Network Problems
Paperback$31.78$31.78Delivery Oct 13 - 16
Editorial Reviews
Amazon.com Review
Within the dozens of techniques and tips offered here, this book accomplishes at least two goals. First, it shows how concurrency is implemented by default within Java, with material on how built-in features (like the synchronized keyword and its memory model) can be expected to perform when dealing with multiple threads. Naturally, Java threads themselves are also covered, including priorities, scheduling, and the like.
Much of this book looks at ways to improve performance of concurrent code beyond the simple default strategies. After defining criteria for measuring concurrent code (such as safety and "liveness," a measure of running live threads effectively), the book presents dozens of techniques for letting threads work together safely. For the working Java programmer, coverage of patterns that have been implemented in the downloadable java.concurrency package will be the most immediately useful. (Within this nearly encyclopedic survey, short code snippets are used for every pattern and concept.)
Though theoretical at times, this book offers plenty of ideas and sample code to get you started thinking of ways to improve multithreaded code.
Impressively comprehensive, Concurrent Programming in Java offers a veritable bible of techniques for doing two things at once with threads in Java. It's a worthwhile guide to the state-of-the-art strategies for improving the performance of your Java threads. --Richard Dragan
Topics covered: Threads and concurrency in Java, design considerations (safety, liveness, and performance), Before/After Patterns, layering, adapters, immutability and synchronization, deadlock, resource ordering, the Java Memory Model and concurrency, using the java.concurrency package, confinement, refactoring for concurrency, mutexes, read-write locks, recovering from failure, notifications, semaphores, latches, exchanges, transactions, one-way messages, worker threads, polling and event-driven I/O, parallelism techniques (fork/join, computation trees, and barriers), Communicating Sequential Processes (CSP).
From the Back Cover
In this second edition, you will find thoroughly updated coverage of the Javao 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 structuring 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.
0201310090B04062001
About the Author
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.
Product details
- Publisher : Addison-Wesley Professional
- Publication date : October 25, 1999
- Edition : 2nd
- Language : English
- Print length : 432 pages
- ISBN-10 : 0201310090
- ISBN-13 : 978-0201310092
- Item Weight : 1.56 pounds
- Dimensions : 7.3 x 1 x 9.1 inches
- Best Sellers Rank: #2,223,495 in Books (See Top 100 in Books)
- #462 in Java Programming
- #4,022 in Computer Programming Languages
- #7,197 in Computer Software (Books)
- Customer Reviews:
About the author

Discover more of the author’s books, see similar authors, read book recommendations and more.
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on AmazonTop reviews from the United States
- 5 out of 5 stars
Everything you need to know about concurrency in Java
Reviewed in the United States on April 11, 2003Concurrent programming is fraught with peril. It's much more complex than sequential programming in every meaningful way from specification to unit testing. But if you want to do it right, meaning balancing liveness with safety for efficient and robust multi-threaded applications, you need Doug Lea's "Concurrent Programming in Java". Especially if you need to design an extensible framework with concurrency; well-known examples of such frameworks incluce Swing, most of java.net, and just about every aspect of J2EE.
Lea provides an intense introduction at the level of an advanced undergraduate course. It's fairly academic in tone, because he takes the time to provide thorough definitions and detailed examples. As a former academic who now designs and programs for a living, this is just what I was looking for. But don't buy this book expecting a cookbook of code to cut and paste. It's much more about providing you the fundamental tools to design your own concurrent classes, applications and frameworks.
Lea presupposes the user is fluent in Java, knows a bit about concurrent programming patterns involving mutexes, semaphores, etc, and is familiar with the basic object-oriented design patterns. If you're not up to speed in these areas, the path I followed was reading the following:
* Lewis's "Threads Primer" (warning: it's C/unix-based),
* Gosling and Joy's "Java Programming Language",
* Bloch's "Effective Java", and
* Gamma et al.'s "Design Patterns".
Even if you don't buy this book, consider using Lea's concurrent.util package available from his web site. It provides solid implementations of everything from simple mutexes to concurrent read-single write wrappers for Java collections (Sun's own wrappers simply synchronize all methods, which suffers reduced liveness compared to CRSW designs). And it's both elegantly designed and thoroughly javadoc-ed.
The first edition was great, and I've just finished reading the second edition cover to cover and it has taken my understanding of concurrent design to a new level. Just be warned that this book's not for novices or hobbyists; it's for programmers who need to design the guts of concurrent systems the "right" way and then implement them in Java, especially for extensible frameworks.
28 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try againWe'll check if this review meets our community guidelinesOpens in a new tab. If it doesn't, we'll remove it.
CancelReport - 5 out of 5 stars
Concurrency implementation.
Reviewed in the United States on November 6, 2011Before ths book, I was excited by "Programming with Posix Threads".
although this book was published in 1999 ,
Java Concurrency Implementation has been great resource for me.
if new language is created sometimes,
I would like to write book like this as long as it is possible . ^^;
One person found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try againWe'll check if this review meets our community guidelinesOpens in a new tab. If it doesn't, we'll remove it.
CancelReport - 4 out of 5 stars
Great Material ... But Dense
Reviewed in the United States on July 13, 2013The book is great. It has a lot of good concepts in it. You will learn a lot from this book. Just be prepared ... it is pretty heavy. The way it is structured and written can be tough to read, but once you get comfortable with the style, you will learn a lot. If it was easier to read, I would give it 5 stars!
2 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try againWe'll check if this review meets our community guidelinesOpens in a new tab. If it doesn't, we'll remove it.
CancelReport - 5 out of 5 stars
Very good and thorough explanation
Reviewed in the United States on October 7, 2013The book is very good in explaining the details of Java concurrency model. It is pretty old, but that is good too, because instead of simply describing new solutions, it actually explains why these new solutions were necessary in the first place.
2 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try againWe'll check if this review meets our community guidelinesOpens in a new tab. If it doesn't, we'll remove it.
CancelReport - 5 out of 5 stars
Great Threaded Programming Information for More than Java
Reviewed in the United States on January 9, 2006This is the best book I have ever read on threading, and certainly applies well to other languages naturally (especially languages with a modern and mature thread library like Mono/.NET). Unlike other reviewers here, I encourage so-called "beginners" to read this book. He has plenty of examples so you will not get lost, and this *is* the right way to do things, so start with this one.
3 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try againWe'll check if this review meets our community guidelinesOpens in a new tab. If it doesn't, we'll remove it.
CancelReport - 1 out of 5 stars
zero rating
Reviewed in the United States on June 1, 2013It's the worst book of all the tech books I have read. No proper organizing. You dont feel like reading this book at all when you start. The content is clumsy.
Sending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try againWe'll check if this review meets our community guidelinesOpens in a new tab. If it doesn't, we'll remove it.
CancelReport - 5 out of 5 stars
Currently studying concurrency.
Reviewed in the United States on February 22, 2016Book is a little dated now but the principles in this book are still sound. Writing is informative and coherent. Would recommend.
One person found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try againWe'll check if this review meets our community guidelinesOpens in a new tab. If it doesn't, we'll remove it.
CancelReport - 3 out of 5 stars
Thick, dense, but why?
Reviewed in the United States on August 23, 2002This book is thick, dense, and not as good as other's think it is. (But it isn't without value to the RIGHT audience).
In summary:
The write style makes it hard to read.
The organization makes it hard to read.
Don't kid yourself that this is anything other than a book about Java multi-threading
There is more theoretical information in here then you are likely to find in other Java multi-threading books if you can slug your way through it. (and I mean useful theoretical information).
If this is your first try into multi-threading you should probably look elsewhere. (I would only rate this book as a two star for beginners).
The details:
The book is written in a very academic style like a very long conference paper. Now don't get me wrong, I get tired of the O'Reilly down home writing style after a while as well, but I have seen better writing (through not by my hand) that makes things clear and easy to understand. I think one of the reasons this book is dense is that the writing is not as clear or as well organized as it should be.
While there are many parts of this book that do apply to multi-threading in general a lot of it does not. Believe it or not but the Win32 API provides a vastly superior threading library than Java does. (I don't know if this is part of Java's keep it very, very simple design philosophy, the need to run on many platforms so use the least common denominator approach, or something else. I do wish SUN would fix the threading API like they fixed the first Java windowing api however since it is frustrating to work with). So there is a lot in the book that does not apply to C++ multi-threading on Windows (and I suspect most versions of UNIX as well) and since the author does not mention what is and is not applicable I would NOT recommend this book as a general multi-threading theory book thinking you can apply what is in here to other languages and platforms blindly. (You could end up doing something the hard slow way because you are unaware of the fact that you can wait on several locks at once in other platforms - as only one example).
Now don't get me wrong, if you are doing Java multi-threading only and you want a strong theoretical base to work from and you have the time to sit down and read this book, I'd say it's worth it. If you need to know the basics in a hurry you may want to look elsewhere. (Somebody else here mentioned Oaks & Wong - I haven't read that book but it might be worthwhile as the first read on the topic).
I would not read this as my first book on multi-threading. If you've done multi-threading work in Java or on other platforms then this could be your first book on Java multi-threading.
25 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try againWe'll check if this review meets our community guidelinesOpens in a new tab. If it doesn't, we'll remove it.
CancelReport
Top reviews from other countries
Bandidoz5 out of 5 starsExcellent
Reviewed in the United Kingdom on January 8, 2015I very nearly didn't buy this book on the basis of many reviews here, however I decided to take a punt and have a look.
I was astonished to find that I *really* got on well with this book; much of the philosophy makes perfect sense, the examples are lucid and the explanations are thorough.
Perhaps this book is not for the faint hearted, but as an experienced developer I found this book to be exactly what I was looking for in terms of how to properly use synchronisation and lock-free algorithms.
Sending feedback...Thanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try againWe'll check if this review meets our community guidelinesOpens in a new tab. If it doesn't, we'll remove it.
CancelReport
Gerardo Nieto Lopez1 out of 5 starsPésimo producto.
Reviewed in Mexico on June 30, 2020El libro es impreso de impresora y no imprenta. Esta maltratado y sucio. La peor compra que pudiera realizarse.




1 out of 5 starsPésimo producto.
Reviewed in Mexico on June 30, 2020El libro es impreso de impresora y no imprenta. Esta maltratado y sucio. La peor compra que pudiera realizarse.
Sending feedback...Thanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try againWe'll check if this review meets our community guidelinesOpens in a new tab. If it doesn't, we'll remove it.
CancelReport
Sagar R. Kapadia5 out of 5 starsFive Stars
Reviewed in India on December 23, 2016Excellent
Sending feedback...Thanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try againWe'll check if this review meets our community guidelinesOpens in a new tab. If it doesn't, we'll remove it.
CancelReport
Olaf W.4 out of 5 starsDie Grundlage für Nebenläufige Programierung in Java
Reviewed in Germany on November 17, 2021Java hat sich weiterentwickelt, aber die Grundlagen sind gleichgeblieben. Nicht einfach zu lesen. Viele Verweise auf andere Forschungsergebnisse. Um die Grundlagen zu verstehen, ist dieses Buch sehr hilfreich.
Sending feedback...Thanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try againWe'll check if this review meets our community guidelinesOpens in a new tab. If it doesn't, we'll remove it.
CancelReport
















