1. 程式人生 > >ConcurrentMap 裡幾個實現為原子性的複合操作

ConcurrentMap 裡幾個實現為原子性的複合操作

ConcurrentMap接口裡封裝了一些複合性操作,他們是原子性的操作。

package cn.t1;

import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;


public class T1 {
	public static void main(String[] args) {
		ConcurrentMap<String, String> cm=new ConcurrentHashMap<String,String>();
		
		//不存在key時候,新增成功且返回null,若key已經存在則返回key對映的value
		String pia = cm.putIfAbsent("cs1", "a");
		System.out.println("putIfAbsent:"+pia); //新增成功,返回null
		String pia1 = cm.putIfAbsent("cs1", "a1");
		System.out.println("putIfAbsent:"+pia1); //新增失敗,因為key已經存在,此時返回key對映的值a
		System.out.println(cm+"\n");
		
		
		//當存在可以,且key和value對映成功時候才刪除返回true
		boolean remove = cm.remove("cs1", "a1");
		System.out.println("remove:"+remove); //key和value沒有對映成功,刪除失敗
		boolean remove1 = cm.remove("cs1", "a");
		System.out.println("remove:"+remove1); //key和value沒有對映成功,刪除成功
		System.out.println(cm+"\n");
		
		
		//當key存在,且對映到第二個引數上的value時候,才把value替換為第三個引數上的value
		cm.putIfAbsent("cs1", "a");
		boolean replace = cm.replace("cs1", "a1", "b"); //key沒有對映到a1上,替換失敗返回false
		System.out.println("replace:"+replace);
		System.out.println(cm);
		boolean replace2 = cm.replace("cs1", "a", "b"); //cs1存在,且對映到a上,替換成功返回true
		System.out.println("replace:"+replace2);
		System.out.println(cm);
		
	}

}                                                                                                                                                         
輸出:
putIfAbsent:null
putIfAbsent:a
{cs1=a}


remove:false
remove:true
{}


replace:false
{cs1=a}
replace:true
{cs1=b}