![Concurrent Programming in Java](http://servimg.eyrolles.com/static/media/0092/9780201310092_internet_w290.jpg)
Concurrent Programming in Java
Design Principles and Patterns
Résumé
- 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.
Table of contents
1 Concurrent Object-Oriented Programming
1.1 Using Concurrency Constructs
1.1.1 A Particle Applet
1.1.2 Thread Mechanics
1.1.3 Further Readings
1.2 Objects and Concurrency
1.2.1 Concurrency
1.2.2 Concurrent Execution Constructs
1.2.3 Concurrency and OO Programming
1.2.4 Object Models and Mappings
1.2.5 Further Readings
1.3 Design Forces
1.3.1 Safety
1.3.2 Liveness
1.3.3 Performance
1.3.4 Reusability
1.3.5 Further Readings
1.4 Before/After Patterns
1.4.1 Layering
1.4.2 Adapters
1.4.3 Subclassing
1.4.4 Method Adapters
1.4.5 Further Readings
2 Exclusion
2.1 Immutability
2.1.1 Applications
2.1.2 Construction
2.2 Synchronization
2.2.1 Mechanics
2.2.2 Fully Synchronized Objects
2.2.3 Traversal
2.2.4 Statics and Singletons
2.2.5 Deadlock
2.2.6 Resource Ordering
2.2.7 The Java Memory Model
2.2.8 Further Readings
2.3 Confinement
2.3.1 Confinement Across Methods
2.3.2 Confinement Within Threads
2.3.3 Confinement Within Objects
2.3.4 Confinement Within Groups
2.3.5 Further Readings
2.4 Structuring and Refactoring Classes
2.4.1 Reducing Synchronization
2.4.2 Splitting Synchronization
2.4.3 Read-Only Adapters
2.4.4 Copy-on-Write
2.4.5 Open Containers
2.4.6 Further Readings
2.5 Using Lock Utilities
2.5.1 Mutexes
2.5.2 Read-Write Locks
2.5.3 Further Readings
3 State Dependence
3.1 Dealing with Failure
3.1.1 Exceptions
3.1.2 Cancellation
3.1.3 Further Readings
3.2 Guarded Methods
3.2.1 Guarded Suspension
3.2.2 Monitor Mechanics
3.2.3 Guarded Waits
3.2.4 Notifications
3.2.5 Timed Waits
3.2.6 Busy Waits
3.3 Structuring and Refactoring Classes
3.3.1 Tracking State
3.3.2 Conflict Sets
3.3.3 Subclassing
3.3.4 Confinement and Nested Monitors
3.3.5 Further Readings
3.4 Using Concurrency Control Utilities
3.4.1 Semaphores
3.4.2 Latches
3.4.3 Exchangers
3.4.4 Condition Variables
3.4.5 Further Readings
3.5 Joint Actions
3.5.1 General Solutions
3.5.2 Decoupling Observers
3.5.3 Further Readings
3.6 Transactions
3.6.1 Transaction Protocols
3.6.2 Transaction Participants
3.6.3 Creating Transactions
3.6.4 Vetoable Changes
3.6.5 Further Readings
3.7 Implementing Utilities
3.7.1 Acquire-Release Protocols
3.7.2 Delegated Actions
3.7.3 Specific Notifications
3.7.4 Further Readings
4 Creating Threads
4.1 Oneway Messages
4.1.1 Message Formats
4.1.2 Open Calls
4.1.3 Thread-Per-Message
4.1.4 Worker Threads
4.1.5 Polling and Event-Driven IO
4.1.6 Further Readings
4.2 Composing Oneway Messages
4.2.1 Composition
4.2.2 Assembly Line
4.2.3 Further Readings
4.3 Services in Threads
4.3.1 Completion Callbacks
4.3.2 Joining Threads
4.3.3 Futures
4.3.4 Scheduling Services
4.3.5 Further Readings
4.4 Parallel Decomposition
4.4.1 Fork/Join
4.4.2 Computation Trees
4.4.3 Barriers
4.4.4 Further Readings
4.5 Active Objects
4.5.1 CSP
4.5.2 Further Readings
Index
L'auteur - 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.
Caractéristiques techniques
PAPIER | |
Éditeur(s) | Addison Wesley |
Auteur(s) | Doug Lea |
Parution | 10/10/1999 |
Édition | 2eme édition |
Nb. de pages | 410 |
Format | 18,6 x 23,4 |
Poids | 643g |
EAN13 | 9780201310092 |
ISBN13 | 978-0-201-31009-2 |
Avantages Eyrolles.com
Consultez aussi
- Les meilleures ventes en Graphisme & Photo
- Les meilleures ventes en Informatique
- Les meilleures ventes en Construction
- Les meilleures ventes en Entreprise & Droit
- Les meilleures ventes en Sciences
- Les meilleures ventes en Littérature
- Les meilleures ventes en Arts & Loisirs
- Les meilleures ventes en Vie pratique
- Les meilleures ventes en Voyage et Tourisme
- Les meilleures ventes en BD et Jeunesse