在java.util.concurrent包中提供了一个线程安全版本的Map类型数据结构:ConcurrentMap.本篇文章主要关注ConcurrentMap接口以及它的Hash版本的实现ConcurrentHashMap. 一.ConcurrentMap 与Map接口相比,ConcurrentMap多了4个方法: 1)putIfAbsent方法:如果key不存在,添加key-value.方法会返回与key关联的value V putIfAbsent(K key, V value); 2)re…
java.util.AbstractCollection<E> 源码分析(JDK1.7) --------------------------------------------------------------------------------- java.util.AbstractCollection<E>是一个抽象类,它的定义如下: public abstract class AbstractCollection<E> implements Collectio…
Model类,集中整个应用的数据和业务逻辑——场景.属性和标签: /** * Returns a list of scenarios and the corresponding active attributes. * An active attribute is one that is subject to validation in the current scenario. * 返回所有场景及与之对应的 active 属性的列表 * active 属性是指在默认场景中验证的 * The r…
今天阅读java.util.concurrent 中 ArrayBlockingQueue 的源码,发现其中有很多下面这行代码 final ReentrantLock lock = this.lock 对此行代码非常疑惑,为什么不直接使用this.lock 呢?为什么要使用局部变量呢?于是使用强大的谷歌搜了一把,发现下面两种答案 1. concurrent包的作者Doug Lea 在邮件当中的回复 It’s ultimately due to the fundamental mismatch b…