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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java并发包:ConcurrentMap

發(fā)布時(shí)間:2023/12/3 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java并发包:ConcurrentMap 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載自??Java并發(fā)包:ConcurrentMap

?

文章譯自:http://tutorials.jenkov.com/java-util-concurrent/index.html?
抽空翻譯了一下這個(gè)教程的文章,后面會(huì)陸續(xù)放出,如有不妥,請(qǐng)批評(píng)指正。?
轉(zhuǎn)自請(qǐng)注明出處。?
之前漏了一篇文章,這篇應(yīng)該是在雙端隊(duì)列之后的,這里補(bǔ)上。

ConcurrentMap

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

ConcurrentMap的具體實(shí)現(xiàn)

由于ConcurrentMap是一個(gè)接口類,使用時(shí)需要使用它的實(shí)現(xiàn)類。Java.util.concurrent包中有下面關(guān)于ConcurrentMap接口的實(shí)現(xiàn)類。

  • ConcurrentHashMap

ConcurrentHashMap

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

ConcurrentHashMap的另一個(gè)不同之處是,如果在迭代的時(shí)候ConcurrentHashMap被修改了,ConcurrentHashMap是不會(huì)拋出ConcurrentModificationException異常的。迭代器不能被超過(guò)一個(gè)以上的線程使用。

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

ConcurrentMap實(shí)例

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

ConcurrentNavigableMap

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

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

haedMap()

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

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

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

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

headMap將會(huì)指向一個(gè)僅僅包含key為“1”的ConcurrentNavigableMap,因?yàn)橹挥羞@個(gè)key是嚴(yán)格小于“2”的。ConcurrentSkipListMap是ConcurrentNavigableMap的實(shí)現(xiàn)類。

查看JavaDoc了解這個(gè)方法以及它的重載版本更詳細(xì)的執(zhí)行情況。

tailMap()

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

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

下面的例子說(shuō)明了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”兩個(gè)鍵,因?yàn)檫@兩個(gè)鍵是大于或者等于給定的鍵值“2”。?
查看JavaDoc了解這個(gè)方法以及它的重載版本更詳細(xì)的執(zhí)行情況。

subMap()

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

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

方法返回的subMap僅包含一個(gè)key等于“2”的鍵值對(duì),因?yàn)橹挥羞@個(gè)鍵是大于或等“2”,并且小于“3”的。

更多方法

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

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

更多信息請(qǐng)查看官方JavaDoc。

?

總結(jié)

以上是生活随笔為你收集整理的Java并发包:ConcurrentMap的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。