李人 发表于 2021-5-18 15:48

闲来无事 codeReview 题目!!!

本帖最后由 李人 于 2021-5-18 15:56 编辑

最上面的注释是要求!!!

/**
* 一个简单的对象缓存Service,只允许并发读,不允许并发读写
*
*/
@Service
public class CacheService {
    private final Map<String, Object> map = new HashMap<>();
    private final ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();

    /**
   * 获取一个 key 对应的 value
   *
   * @param key
   * @return
   */
    public final Object get(String key) {
      // 获取读锁
      rwLock.readLock().tryLock();
      try {
            return map.get(key);
      } finally {
            // 释放读锁
            rwLock.readLock().unlock();
      }
    }

    /**
   * 设置 key 对应的 value,并返回旧的 value
   *
   * @param key
   * @param value
   * @return
   */
    public final Object put(String key, Object value) {
      // 获取写锁
      rwLock.writeLock().tryLock();
      try {
            return map.put(key, value);
      } finally {
            // 释放写锁
            rwLock.writeLock().unlock();
      }
    }
}

fightingmy 发表于 2021-5-18 16:14

这读也没并发呀。。。。

奔跑的蜗牛119 发表于 2021-5-18 19:31

用ConcurrentHashMap?

ljhtoljh 发表于 2021-5-18 23:25

写了一堆的bug?这能达到你想要的?
页: [1]
查看完整版本: 闲来无事 codeReview 题目!!!