Java 9 concurrency cookbook master the art of fast, effective Java development with the power of concurrent and parallel programming
Master the art of fast, effective Java development with the power of concurrent and parallel programming About This Book Get detailed coverage of important recipes on multi-threading and parallel programming This book takes a close look at the Java 9 APIs and their impact on concurrency See practica...
Otros Autores: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
Birmingham, England ; Mumbai, [India] :
Packt
2017.
|
Edición: | Second edition |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009629980806719 |
Tabla de Contenidos:
- Cover
- Copyright
- Credits
- About the Author
- About the Reviewer
- www.PacktPub.com
- Customer Feedback
- Table of Contents
- Preface
- Chapter 1: Thread Management
- Introduction
- Creating, running, and setting the characteristics of a thread
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Interrupting a thread
- Getting ready
- How to do it...
- How it works...
- There's more...
- Controlling the interruption of a thread
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Sleeping and resuming a thread
- Getting ready
- How to do it...
- How it works...
- There's more...
- Waiting for the finalization of a thread
- Getting ready
- How to do it...
- How it works...
- There's more...
- Creating and running a daemon thread
- Getting ready
- How to do it...
- How it works...
- There's more...
- Processing uncontrolled exceptions in a thread
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Using thread local variables
- Getting ready
- How to do it...
- How it works...
- There's more...
- Grouping threads and processing uncontrolled exceptions in a group of threads
- Getting ready
- How to do it...
- How it works...
- See also
- Creating threads through a factory
- Getting ready
- How to do it...
- How it works...
- See also
- Chapter 2: Basic Thread Synchronization
- Introduction
- Synchronizing a method
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Using conditions in synchronized code
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Synchronizing a block of code with a lock
- Getting ready
- How to do it...
- How it works...
- There's more...
- Avoiding deadlocks
- See also.
- Synchronizing data access with read/write locks
- Getting ready...
- How to do it...
- How it works...
- See also
- Using multiple conditions in a lock
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Advanced locking with the StampedLock class
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Chapter 3: Thread Synchronization Utilities
- Introduction
- Controlling concurrent access to one or more copies of a resource
- Getting ready
- How to do it...
- How it works...
- There's more...
- Fairness in semaphores
- See also
- Waiting for multiple concurrent events
- Getting ready
- How to do it...
- How it works...
- There's more...
- Synchronizing tasks in a common point
- Getting ready
- How to do it...
- How it works...
- There's more...
- Resetting a CyclicBarrier object
- Broken CyclicBarrier objects
- See also
- Running concurrent-phased tasks
- Getting ready
- How to do it...
- How it works...
- There's more...
- Registering participants in Phaser
- Forcing the termination of Phaser
- See also
- Controlling phase change in concurrent-phased tasks
- Getting ready
- How to do it...
- How it works...
- See also
- Exchanging data between concurrent tasks
- Getting ready
- How to do it...
- How it works...
- There's more...
- Completing and linking tasks asynchronously
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also...
- Chapter 4: Thread Executors
- Introduction
- Creating a thread executor and controlling its rejected tasks
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Executing tasks in an executor that returns a result
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also.
- Running multiple tasks and processing the first result
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Running multiple tasks and processing all the results
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Running a task in an executor after a delay
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Running a task in an executor periodically
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Canceling a task in an executor
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Controlling a task finishing in an executor
- Getting ready
- How to do it...
- How it works...
- See also
- Separating the launching of tasks and the processing of their results in an executor
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Chapter 5: Fork/Join Framework
- Introduction
- Creating a fork/join pool
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Joining the results of the tasks
- How to do it...
- How it works...
- There's more...
- See also
- Running tasks asynchronously
- How to do it...
- How it works...
- There's more...
- See also
- Throwing exceptions in the tasks
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Canceling a task
- Getting ready...
- How to do it...
- How it works...
- See also
- Chapter 6: Parallel and Reactive Streams
- Introduction
- Creating streams from different sources
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Reducing the elements of a stream
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also.
- Collecting the elements of a stream
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Applying an action to every element of a stream
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Filtering the elements of a stream
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Transforming the elements of a stream
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Sorting the elements of a stream
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Verifying conditions in the elements of a stream
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Reactive programming with reactive streams
- Getting ready
- How to do it...
- How it works...
- There's more...
- Chapter 7: Concurrent Collections
- Introduction
- Using non-blocking thread-safe deques
- Getting ready
- How to do it...
- How it works...
- There's more...
- Using blocking thread-safe deques
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Using blocking thread-safe queue ordered by priority
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Using thread-safe lists with delayed elements
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Using thread-safe navigable maps
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Using thread-safe HashMaps
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Using atomic variables
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Using atomic arrays
- Getting ready
- How to do it.
- How it works...
- There's more...
- See also
- Using the volatile keyword
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Using variable handles
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Chapter 8: Customizing Concurrency Classes
- Introduction
- Customizing the ThreadPoolExecutor class
- Getting ready
- How to do it...
- How it works...
- See also
- Implementing a priority-based Executor class
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Implementing the ThreadFactory interface to generate custom threads
- Getting ready
- How to do it...
- How it works...
- There's more...
- Using our ThreadFactory in an Executor object
- Getting ready
- How to do it...
- How it works...
- See also
- Customizing tasks running in a scheduled thread pool
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Implementing the ThreadFactory interface to generate custom threads for the fork/join framework
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Customizing tasks running in the fork/join framework
- How to do it...
- How it works...
- See also
- Implementing a custom Lock class
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Implementing a transfer queue-based on priorities
- Getting ready
- How to do it...
- How it works...
- See also
- Implementing your own atomic object
- Getting ready
- How to do it...
- How it works...
- See also
- Implementing your own stream generator
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Implementing your own asynchronous stream
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also.
- Chapter 9: Testing Concurrent Applications.