Download Latest Version concurrencyfreaks-0.5.jar (331.7 kB)
Email in envelope

Get an email when there's a new version of Concurrency Freaks

Home / java / src / com
Name Modified Size InfoDownloads / Week
Parent folder
concurrencyfreaks 2014-03-14
Totals: 1 Item   0
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:
http://www.concurrencyfreaks.com


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.
Source: README.txt, updated 2013-09-29