java多线程与并发之java并发编程实践(九)
2011-09-18 11:53
232 查看
并发集合(三)
----------
使用ConcurrentMap实现类
java.util.concurrent.ConcurrentMap接口和ConcurrentHashMap实现类只能在键不存在时将元素加入到map中,只有在键存在并映射到特定值时才能从map中删除一个元素。主要定义了下面几个方法(K表示键的类型,V表示值的类型):
1. V putIfAbsent(K key,V value) : 如果指定键已经不再与某个值相关联,则将它与给定值关联。
2. boolean remove(Object key,Object value) : 只有目前将键的条目映射到给定值时,才移除该键的条目。
3. boolean replace(K key,V oldValue,V newValue) : 只有目前将键的条目映射到给定值时,才替换该键的条目。
4. V replace(K key,V value) : 只有目前将键的条目映射到某一值时,才替换该键的条目。
putIfAbsent()方法用于在map中进行添加。这个方法以要添加到ConcurrentMap中的键的值为参数,就像普通的put()方法,但是只有在map不包含这个键时,才能将键加入到map中。如果map已经包含这个键,那么这个键的现有值就会保留。putIfAbsent()方法是原子的。等价于下面的代码(除了原子地执行此操作之外):
----------
使用ConcurrentMap实现类
java.util.concurrent.ConcurrentMap接口和ConcurrentHashMap实现类只能在键不存在时将元素加入到map中,只有在键存在并映射到特定值时才能从map中删除一个元素。主要定义了下面几个方法(K表示键的类型,V表示值的类型):
1. V putIfAbsent(K key,V value) : 如果指定键已经不再与某个值相关联,则将它与给定值关联。
2. boolean remove(Object key,Object value) : 只有目前将键的条目映射到给定值时,才移除该键的条目。
3. boolean replace(K key,V oldValue,V newValue) : 只有目前将键的条目映射到给定值时,才替换该键的条目。
4. V replace(K key,V value) : 只有目前将键的条目映射到某一值时,才替换该键的条目。
putIfAbsent()方法用于在map中进行添加。这个方法以要添加到ConcurrentMap中的键的值为参数,就像普通的put()方法,但是只有在map不包含这个键时,才能将键加入到map中。如果map已经包含这个键,那么这个键的现有值就会保留。putIfAbsent()方法是原子的。等价于下面的代码(除了原子地执行此操作之外):
if(!map.containsKey(key)) return map.put(key,value); else return map.get(key)像putIfAbsent()方法一样,重载后的remove()方法有两个参数:键和值。在调用时,只有当键映射到指定的值时才从map中删除这个键。如果不匹配,那么就不删除这个键,并返回false。如果值匹配键的当前映射内容,那么就删除这个键,这个方法是原子性的。这种操作的等价源代码(除了原子地执行此操作之外):
if(map.containsKey(key) && map.get(key).equals(value)){ map.remove(key); return true; }else return false;总之,ConcurrentMap中定义的方法是原子性的。
相关文章推荐
- java多线程与并发之java并发编程实践(六)
- java多线程与并发之java并发编程实践
- java多线程与并发之java并发编程实践(八)
- Java线程与并发编程实践----额外的线程能力
- java并发编程实践笔记
- Java多线程编程--(8)学习Java5.0 并发编程包--线程池、Callable & Future 简介
- 《Java Concurrency》读书笔记,Java并发编程实践基础
- [Java 并发] Java并发编程实践 思维导图 - 第六章 任务执行
- java并发实践编程学习笔记
- java并发编程实践--原子变量、volatile、synchornized
- java并发编程实践学习笔记
- java线程与并发编程实践----API基础
- java并发编程实践 ThreadLocal
- Java并发编程实践笔记之-并发简史
- Java线程与并发编程实践----同步
- Java并发编程实践笔记(五)——chapter3(发布溢出,线程封闭)
- [Java 并发] Java并发编程实践 思维导图 - 第二章 线程安全性
- Java多线程编程--(9)学习Java5.0 并发编程包--线程工具类
- JAVA并发编程实践-Building Blocks
- Java 并发编程实践基础 读书笔记: 第一章 JAVA并发编程实践基础