Concurrency Freaks Library
This is a Java library of concurrent data structures.
For the moment, it is mostly reader-writer locks, a few counters, and a few blocking data structures, but
much more stuff is being prepared.
Check out our blog for more info and tips on concurrency programming and patterns:
What's new in release 0.5:
- More validation tests
- Added BlockingArrayList: An ArrayList protected with a LongAdderRWLock.
- Added "transient" keyword to member fields of lock classes so that they work with serialization.
- Added OffByXCounter: A counter that can be incremented from a single thread and uses relaxed atomics to improve performance
- Added DistributedCacheLineCounter: A counter that can be incremented and read from multiple threads and that uses a set of counters distributed over several cache lines, which makes it very fast for incrementing but slow for reading.
- Added DCLCRWLock: A Reader-Writer lock based on a Distributed Cache Line Counter that uses an array of fixed size and a hash function to distribute the reader's states among different cache lines to avoid contention (and false-sharing).
- Added DCLCStampedRWLock: A lock similar to DCLCRWLock that "defaults" to a StampedLock in case of many Writers.
- Added LongAdderRWLock: A Reader-Writer lock that uses the same 2-state algorithm described in the NUMA paper but with LongAdder as counters for Readers.
- Added LongAdderStampedRWLock: A lock similar similar to LongAdderRWLock that defaults to a StampedLock in case of many Writers.
- Added LongAdderExtRWLock: A Lock that uses a single LongAdder instead of two LongAdder instances like in the case of the LongAdderRWLock, but it requires a small modification to the LongAdder provided in JDK 8.