码迷,mamicode.com
首页 > 编程语言 > 详细

[java] 简单的ConcurrentHashMap

时间:2015-07-25 22:41:25      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:

ConcurrentMap和Guava的LocalCache实现原理相近,底层的存储方式使用的时table方式来存储。这里使用最简单且最暴力的方式,在每次访问的时候均加锁。

ConcurrentHashMap接口:

public interface ConcurrentHashMap<K, V> {

    public V get(K k);

    public void put(K key, V value);

    public void putAll(Iterable<MapEntry<K, V>> kIterator);

    public V remove(K k);
}

  MapEntry:

public class MapEntry<K, V> {

    private K key;

    private V value;

    public K getKey() {
        return key;
    }

    public void setKey(K key) {
        this.key = key;
    }

    public V getValue() {
        return value;
    }

    public void setValue(V value) {
        this.value = value;
    }
}

  SimpleConcurrentHashMap接口:

import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;

import java.util.HashMap;
import java.util.Iterator;

public class SimpleConcurrentHashMap<K, V> implements ConcurrentHashMap<K, V> {

    private final HashMap<K, V> cache = Maps.newHashMap();

    public SimpleConcurrentHashMap() {
    }

    @Override
    public V get(K k) {
        Preconditions.checkNotNull(k);
        synchronized (cache) {
            return cache.get(k);
        }
    }

    @Override
    public void put(K key, V value) {
        Preconditions.checkNotNull(key);
        Preconditions.checkNotNull(value);
        synchronized (cache) {
            cache.put(key, value);
        }
    }

    @Override
    public void putAll(Iterable<MapEntry<K, V>> entryIterable) {
        Preconditions.checkNotNull(entryIterable);
        Iterator<MapEntry<K, V>> iterator = entryIterable.iterator();
        while (iterator.hasNext()) {
            MapEntry<K, V> next = iterator.next();
            this.put(next.getKey(), next.getValue());
        }
    }

    @Override
    public V remove(K k) {
        Preconditions.checkNotNull(k);
        synchronized (cache) {
            return cache.remove(k);
        }
    }
}

  

[java] 简单的ConcurrentHashMap

标签:

原文地址:http://www.cnblogs.com/life91/p/4676626.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!