A multi-threaded bit-vector set, implemented as an array of primitive {@code longs}. All operations are non-blocking and multi-threaded safe. {@link #contains(int)} calls are roughly the same speed as a {load, mask}sequence. {@link #add(int)} and {@link #remove(int)} calls are a tad moreexpensive than a {load, mask, store} sequence because they must use a CAS. The bit-vector is auto-sizing.
General note of caution: The Set API allows the use of {@link Integer}with silent autoboxing - which can be very expensive if many calls are being made. Since autoboxing is silent you may not be aware that this is going on. The built-in API takes lower-case {@code ints} and is much moreefficient.
Space: space is used in proportion to the largest element, as opposed to the number of elements (as is the case with hash-table based Set implementations). Space is approximately (largest_element/8 + 64) bytes. The implementation is a simple bit-vector using CAS for update.
@since 1.5
@author Cliff Click