日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java并发包:ConcurrentMap

發布時間:2023/12/3 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java并发包:ConcurrentMap 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自??Java并發包:ConcurrentMap

?

文章譯自:http://tutorials.jenkov.com/java-util-concurrent/index.html?
抽空翻譯了一下這個教程的文章,后面會陸續放出,如有不妥,請批評指正。?
轉自請注明出處。?
之前漏了一篇文章,這篇應該是在雙端隊列之后的,這里補上。

ConcurrentMap

java.util.concurrent.ConcurrentMap接口代表一個Map,它可以處理并發訪問。ConcurrentMap除了繼承自java.util.Map的方法,還有一些自己的原子方法。

ConcurrentMap的具體實現

由于ConcurrentMap是一個接口類,使用時需要使用它的實現類。Java.util.concurrent包中有下面關于ConcurrentMap接口的實現類。

  • ConcurrentHashMap

ConcurrentHashMap

ConcurrentHashMap除了有更好的并行性,它與java.util.HashTable類時非常相似的。當你從ConcurrentHashMap讀取數據的時候ConcurrentHashMap是不會加鎖的。另外,ConcurrenthashMap在寫的時候不會全部加鎖。它僅僅鎖住Map中正在被寫入的部分。

ConcurrentHashMap的另一個不同之處是,如果在迭代的時候ConcurrentHashMap被修改了,ConcurrentHashMap是不會拋出ConcurrentModificationException異常的。迭代器不能被超過一個以上的線程使用。

查看官方文檔獲取ConcurrentMap和ConcurrentHashMap更詳細的信息。

ConcurrentMap實例

ConcurrentMap concurrentMap = new ConcurrentHashMap();concurrentMap.put("key", "value");Object value = concurrentMap.get("key");

ConcurrentNavigableMap

java.util.concurrent.ConcurrentNavgableMap接口類是一種支持并行訪問的java.util.NavigableMap,并且它的子map也支持并行訪問,子map是通過headMap(),subMap()和tailMap()等方法返回的。

這里不重新解釋NavigableMap中已有的相同方法,我們僅看看在ConcurrentNavigableMap中增加的一些方法。

haedMap()

headMap(T toKey) 返回一個包含許多鍵的map,其中所有鍵值是嚴格少于給定的toKey。

如果你改變了原始的map,這些改變也會反映到head map上。

下面的例子說明了headMap()方法的使用。

ConcurrentNavigableMap map = new ConcurrentSkipListMap();map.put("1", "one"); map.put("2", "two"); map.put("3", "three");ConcurrentNavigableMap headMap = map.headMap("2");

headMap將會指向一個僅僅包含key為“1”的ConcurrentNavigableMap,因為只有這個key是嚴格小于“2”的。ConcurrentSkipListMap是ConcurrentNavigableMap的實現類。

查看JavaDoc了解這個方法以及它的重載版本更詳細的執行情況。

tailMap()

tailMap(T fromKey)返回一個包含許多鍵的map,其中所有鍵值是大于或者等于給定的fromKey的。

如果你改變了原始的map,這些改變也會反映到head map上。

下面的例子說明了tailMap()方法的使用。

ConcurrentNavigableMap map = new ConcurrentSkipListMap();map.put("1", "one"); map.put("2", "two"); map.put("3", "three");ConcurrentNavigableMap tailMap = map.tailMap("2");

tailMap將包含“2”、“3”兩個鍵,因為這兩個鍵是大于或者等于給定的鍵值“2”。?
查看JavaDoc了解這個方法以及它的重載版本更詳細的執行情況。

subMap()

subMap()方法返回一個包含許多鍵的map,這些鍵值是介于傳給該方法的(including)和(excluding)兩個參數之間的,下面是一個例子:

ConcurrentNavigableMap map = new ConcurrentSkipListMap();map.put("1", "one"); map.put("2", "two"); map.put("3", "three");ConcurrentNavigableMap subMap = map.subMap("2", "3");

方法返回的subMap僅包含一個key等于“2”的鍵值對,因為只有這個鍵是大于或等“2”,并且小于“3”的。

更多方法

ConcurrentNavigableMap接口還包含跟多的一些方法也許會用到的,例如:

  • descendingKeySet()
  • descendingMap()
  • navigableKeySet()

更多信息請查看官方JavaDoc。

?

總結

以上是生活随笔為你收集整理的Java并发包:ConcurrentMap的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。