⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stripedmap.java

📁 java concurrency in practice 源码. JAVA并发设计
💻 JAVA
字号:
package net.jcip.examples;import net.jcip.annotations.*;/** * StripedMap * <p/> * Hash-based map using lock striping * * @author Brian Goetz and Tim Peierls */@ThreadSafepublic class StripedMap {    // Synchronization policy: buckets[n] guarded by locks[n%N_LOCKS]    private static final int N_LOCKS = 16;    private final Node[] buckets;    private final Object[] locks;    private static class Node {        Node next;        Object key;        Object value;    }    public StripedMap(int numBuckets) {        buckets = new Node[numBuckets];        locks = new Object[N_LOCKS];        for (int i = 0; i < N_LOCKS; i++)            locks[i] = new Object();    }    private final int hash(Object key) {        return Math.abs(key.hashCode() % buckets.length);    }    public Object get(Object key) {        int hash = hash(key);        synchronized (locks[hash % N_LOCKS]) {            for (Node m = buckets[hash]; m != null; m = m.next)                if (m.key.equals(key))                    return m.value;        }        return null;    }    public void clear() {        for (int i = 0; i < buckets.length; i++) {            synchronized (locks[i % N_LOCKS]) {                buckets[i] = null;            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -