我有以下数据结构。我正在寻找一个数据结构,其行为类似于以索引为键的并发哈希映射。它需要是线程安全的。我希望获得比具有以下数据结构的并发哈希映射更好的性能,我的实验告诉我,我做了。
所以我的问题是: 我错过了这个实现的东西吗? 我知道bitset不是原子的,但是add / remove中的二进制信号应该处理它。
public class NewDS
{
private BitSet bs = null;
private AtomicIntegerArray arr = null;
private int size;
private Semaphore semaphore = new Semaphore(1, true);
public NewDS( int size) {
this.bs = new BitSet(size);
this.arr = new AtomicIntegerArray(size);
}
public int put (int hashChunkId) throws InterruptedException {
semaphore.acquire();
int index = bs.nextClearBit(0);
arr.set(index, hashChunkId);
semaphore.release();
return index;
}
public void remove(int index) throws InterruptedException {
semaphore.acquire();
bs.clear(index);
semaphore.release();
}
}