From 7bdf878dd40bbfe6370e5bf39daa474c7f246453 Mon Sep 17 00:00:00 2001 From: Zhangmei Li Date: Mon, 10 Jul 2017 13:32:26 +0800 Subject: [PATCH] HugeGraph-407: add KeyLock class Change-Id: I655bdf4da20e0c6b6d7796958485ab066f0020f1 --- .../baidu/hugegraph/concurrent/KeyLock.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/main/java/com/baidu/hugegraph/concurrent/KeyLock.java 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(); + } +}