synchronized vs. ReentrantLock
Both create critical sections. ReentrantLock is unstructured and can lock and unlock in different methods. ReentrantLock can tryLock with a timeout.
ReentrantLock vs ReentrantReadWriteLock
ReentrantLock creates a critical sections that blocks both read & write. ReentrantReadWriteLock allows readLocks to read together, while blocking by critical sections when write is involved. Note that since readLock can block writeLock, it could result in writeLock starvation when a lot of readLocks appear. WriteLock cannot proceed until all readLocks are unlocked.
ReentrantReadWriteLock vs. StampedLock
ReentrantReadWriteLock is a pessimistic lock, which doesn't read while writer writes, and stops writer when it reads.
StampedLock is an optimistic lock, which reads (by tryOptimisticRead) while allowing write to happen, but also detects write (by validate) - if write happens during the time, simply reads again.
No comments:
Post a Comment