ConcurrentMap 裡幾個實現為原子性的複合操作
阿新 • • 發佈:2019-02-02
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}