ConcurrentHashMap使用示例
生活随笔
收集整理的這篇文章主要介紹了
ConcurrentHashMap使用示例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文參考:點擊打開鏈接
一、V putIfAbsent(K key, V value);
此方法解釋:如果key對應的值value不存在就put,且返回null。如果key對應的值value已存在,則返回已存在的值,且value不能為null,否則會報空指針異常。
測試如下:
private static ConcurrentMap<String, Long> wordCounts = new ConcurrentHashMap<>();public static void main(String[] args) throws InterruptedException, ExecutionException {System.out.println(wordCounts.putIfAbsent("1111", 111L));System.out.println(wordCounts.putIfAbsent("1111", 222L));System.out.println(wordCounts.putIfAbsent("1111", 333L)); }
打印結果如下:
null
111
111
二、參考文章中的方法解釋:
public static void increase(String word) {while (true) {Long tempCount = wordCounts.get(word);if (tempCount == null) { //此處可能有多個線程到達System.out.println("線程=["+Thread.currentThread().getName()+"]已經到達1");// Add the word firstly, initial the value as 1if (wordCounts.putIfAbsent(word, 1L) == null) {System.out.println("線程=["+Thread.currentThread().getName()+"]已經到達2");break;}} else {System.out.println("線程=["+Thread.currentThread().getName()+"]已經到達3");if (wordCounts.replace(word, tempCount, tempCount + 1)) {System.out.println("線程=["+Thread.currentThread().getName()+"]已經到達4");break;}}}}
總結
以上是生活随笔為你收集整理的ConcurrentHashMap使用示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 长按弹出快捷菜单
- 下一篇: 一个关于C语言程序指针的用法(其中之一·