diff --git a/src/main/java/com/baidu/hugegraph/concurrent/KeyLock.java b/src/main/java/com/baidu/hugegraph/concurrent/KeyLock.java new file mode 100644 index 000000000..77d51183d --- /dev/null +++ b/src/main/java/com/baidu/hugegraph/concurrent/KeyLock.java @@ -0,0 +1,26 @@ +package com.baidu.hugegraph.concurrent; + +import java.util.concurrent.locks.Lock; + +import com.google.common.util.concurrent.Striped; + +public class KeyLock { + + private Striped locks; + + public KeyLock() { + this(Runtime.getRuntime().availableProcessors() * 4); + } + + public KeyLock(int size) { + this.locks = Striped.lock(size); + } + + public final void lock(Object key) { + this.locks.get(key).lock(); + } + + public final void unlock(Object key) { + this.locks.get(key).unlock(); + } +}