Java Classes
- ReentrantLock
- A reentrant mutual exclusion lock that extends the built-in-monitor lock capabilities
- ReentrantReadWriteLock
- Improves performance when resources are read much more often than written
- Semaphore
- A non-negative integer that controls the access of multiple threads to a limited number of shared resources
- ConditionObject
- Block thread(s) until some condition(s) becomes true
- CountDownLatch
- Allows one or more threads to wait until a set of operations being performed in other threads complete
Considerations
- ReentrantLock have lower overhead than ReentrantReadWriteLock
- ReentrantReadWriteLock may enable more concurrency on multi-core or multi-processor hardware
- ConditionObject & Semaphore have higher overhead than ReentrantLock & ReentrantReadWriteLock
- ConditionObject & Semaphore are more expressive & more flexible
- ConditionObject can be used to lock a thread to keep other threads out of a critical section or keep in the critical section
- ReentrantLock
- A reentrant mutual exclusion lock that extends the built-in-monitor lock capabilities
- ReentrantReadWriteLock
- Improves performance when resources are read much more often than written
- Semaphore
- A non-negative integer that controls the access of multiple threads to a limited number of shared resources
- ConditionObject
- Block thread(s) until some condition(s) becomes true
- CountDownLatch
- Allows one or more threads to wait until a set of operations being performed in other threads complete
Considerations
- ReentrantLock have lower overhead than ReentrantReadWriteLock
- ReentrantReadWriteLock may enable more concurrency on multi-core or multi-processor hardware
- ConditionObject & Semaphore have higher overhead than ReentrantLock & ReentrantReadWriteLock
- ConditionObject & Semaphore are more expressive & more flexible
- ConditionObject can be used to lock a thread to keep other threads out of a critical section or keep in the critical section
ReentrantLock
Use mutual exclusion
Example: The bathroom in an airplane, only one person can use it at time
In Android implements the lock Interface and uses the Ganga four bridge pattern
Methods
- lock()
- lockInterruptibly()
- acquires the lock unless thread is interrupted
- unlock()
Methods
- lock()
- lockInterruptibly()
- acquires the lock unless thread is interrupted
- unlock()
Readers-Witer Locks
- Is a synchonization mechanism often used in context with many concurrent threads
- Allow access to a shared resource
- Where multiple threads have read-only access OR
- one thread has write access
- Human Example
- Formal Political debates: Many people listen the debate but only one person talk
RentrantReadWriteLock
- Use the Bridge pattern
- Inherits functionality from AbstractQueuedSynchronizer
- Implement fair or non-fair lock acquisition model
- Initialize the readerLock / writerLock data members
- Example: Using BluetoothSocket in the class BluetoothSocket.java
- Allows greater concurrency when accessing shared data than a ReentrantLock
- Used for scalable synchronization mechanism for parallel processing
- Tutorial
- Is a synchonization mechanism often used in context with many concurrent threads
- Allow access to a shared resource
- Where multiple threads have read-only access OR
- one thread has write access
- Human Example
- Formal Political debates: Many people listen the debate but only one person talk
RentrantReadWriteLock
- Use the Bridge pattern
- Inherits functionality from AbstractQueuedSynchronizer
- Implement fair or non-fair lock acquisition model
- Initialize the readerLock / writerLock data members
- Example: Using BluetoothSocket in the class BluetoothSocket.java
- Allows greater concurrency when accessing shared data than a ReentrantLock
- Used for scalable synchronization mechanism for parallel processing
- Tutorial
Comentarios
Publicar un comentario