README.md
1 This is a miniature implementation of a concurrent, lock-free (as in lock-less) hash map with weak keys where keys respect reference equality. Such a hash map removes entries containing collected keys by either:
2
3 1. Inline removal (entries that contain to collected keys are removed as a result of interaction with the map).
4 2. Implicit concurrent removal (entries that contain collected keys are removed by an external thread).
5 3. Explicit concurrent removal (explicit interaction with the map's reference queue).
6
7 As a wrapper around this `WeakConcurrentMap`, this package also contains a `DetachedThreadLocal` which describes a weak concurrent map where the current thread serves as a key of the map. Also, this package delivers a `WeakConcurrentSet` as a wrapper around a weak concurrent map.
8
9 This map does not implement the `java.util.Map` interface to simplify the implementation. Writes to the map might cause blocking if many threads write to the map concurrently (this is implied by the maps backing by a `ConcurrentHashMap` and a `ReferenceQueue`), the performance of the map is however significantly better than using a synchronized wrapper around a concurrent hash map.
10
11 The library is hosted on *Maven Central* and *JCenter*:
12
13 ```xml
14 <dependency>
15 <groupId>com.blogspot.mydailyjava</groupId>
16 <artifactId>weak-lock-free</artifactId>
17 <version>0.11</version>
18 </dependency>
19 ```
20