电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java并發編程之詳解ConcurrentHashMap類

瀏覽:17日期:2022-08-10 08:37:16
前言

由于Java程序員常用的HashMap的操作方法不是同步的,所以在多線程環境下會導致存取操作數據不一致的問題,Map接口的另一個實現類Hashtable 雖然是線程安全的,但是在多線程下執行效率很低。為了解決這個問題,在java 1.5版本中引入了線程安全的集合類ConcurrentMap。

Java并發編程之詳解ConcurrentHashMap類

java.util.concurrent.ConcurrentMap接口是Java集合類框架提供的線程安全的map,這意味著多線程同時訪問它,不會影響map中每一條數據的一致性。ConcurrentMap接口有兩個實現類ConcurrentHashMap和ConcurrentSkipListMap,經常被使用的是ConcurrentHashMap,我們來重點關注它。

一、創建ConcurrentHashMap對象

通過下面的代碼創建ConcurrentHashMap

// 創建容量為8,負載系數為0.6的ConcurrentHashMapConcurrentHashMap<Key, Value> numbers = new ConcurrentHashMap<>(8, 0.6f);

使用上面的代碼,我們創建一個叫做numbers的ConcurrentHashMap對象。

Key - 用于關聯Map中每個元素的唯一標識 Value - Map中每個元素,可以通過key值獲取value

需要我們特別注意的是new ConcurrentHashMap<>(8, 0.6).

capacity容量 - 第一個參數表示這個map的容量是8,也就是說這個對象可以存儲8個鍵值對 loadFactor負載因子 - 這個map對象的負載因子是 0.6. 這意味著,每當我們的哈希表被填滿60%的時候,條目就會被移動到一個新的哈希表,其容量大小是原來哈希表的兩倍。

默認容量與負載因子我們還可以通過下面的代碼初始化一個ConcurrentHashMap對象,默認情況下capacity=16,loadFactor=0.75

ConcurrentHashMap<Key, Value> numbers1 = new ConcurrentHashMap<>();二、ConcurrentHashMap常用方法2.1. 向ConcurrentHashMap插入元素 put(K,V) - 向map中插入key/value 鍵值對數據 putAll(map) - 把另一個map中的所有entries插入到當前的map中 putIfAbsent(K,V) - 向map中插入key/value 鍵值對數據,如果該鍵值對的key在map不存在則插入數據,否則不做操作。

import java.util.concurrent.ConcurrentHashMap;class Main { public static void main(String[] args) {// 創建ConcurrentHashMap 用于保存偶數ConcurrentHashMap<String, Integer> evenNumbers = new ConcurrentHashMap<>();// 使用put()方法插入數據evenNumbers.put('Two', 2);evenNumbers.put('Four', 4);// 使用putIfAbsent()插入數據evenNumbers.putIfAbsent('Six', 6);System.out.println('偶數集合ConcurrentHashMap: ' + evenNumbers);//創建ConcurrentHashMap用于保存整數ConcurrentHashMap<String, Integer> numbers = new ConcurrentHashMap<>();numbers.put('One', 1);// 使用putAll()插入數據numbers.putAll(evenNumbers);System.out.println('整數集合ConcurrentHashMap: ' + numbers); }}

輸出結果:

偶數集合ConcurrentHashMap: {Six=6, Four=4, Two=2}整數集合ConcurrentHashMap: {Six=6, One=1, Four=-4, Two=2}2.2.批量獲取ConcurrentHashMap 元素 entrySet()- 獲取 map中key/value 鍵值對集合 keySet()- 獲取map中所有的key的集合 values()- 獲取map中所有的value的集合

import java.util.concurrent.ConcurrentHashMap;class Main { public static void main(String[] args) {ConcurrentHashMap<String, Integer> numbers = new ConcurrentHashMap<>();numbers.put('One', 1);numbers.put('Two', 2);numbers.put('Three', 3);System.out.println('ConcurrentHashMap: ' + numbers);// 獲取 map中key/value 鍵值對集合System.out.println('Key/Value mappings: ' + numbers.entrySet());// 獲取map中所有的key的集合System.out.println('Keys: ' + numbers.keySet());// 獲取map中所有的value的集合System.out.println('Values: ' + numbers.values()); }}

輸出結果

ConcurrentHashMap: {One=1, Two=2, Three=3}Key/Value mappings: [One=1, Two=2, Three=3]Keys: [One, Two, Three]Values: [1, 2, 3]

2.3. 獲取指定Key元素的value值 get() - 獲取指定key元素的value值,如果key不存在返回null getOrDefault() - 獲取指定key元素的value值,如果key不存在返回一個指定的默認值

import java.util.concurrent.ConcurrentHashMap;class Main { public static void main(String[] args) {ConcurrentHashMap<String, Integer> numbers = new ConcurrentHashMap<>();numbers.put('One', 1);numbers.put('Two', 2);numbers.put('Three', 3);System.out.println('ConcurrentHashMap: ' + numbers);// 獲取指定key元素的value值,如果key不存在返回nullint value1 = numbers.get('Three');System.out.println('Using get(): ' + value1);// 獲取指定key元素的value值,如果key不存在返回一個指定的默認值int value2 = numbers.getOrDefault('Five', 5);System.out.println('Using getOrDefault(): ' + value2); }}

輸出結果

ConcurrentHashMap: {One=1, Two=2, Three=3}Using get(): 3Using getOrDefault(): 5

2.4.移除ConcurrentHashMap中的元素 remove(key) - 根據指定的key刪除map中的元素,并將該元素返回 remove(key, value) - 只有當map中存在指定的鍵映射到指定的值時,才會從map中刪除條目,并返回一個布爾值。返回true表示刪除成功,否則表示map中沒有這個鍵值對。

import java.util.concurrent.ConcurrentHashMap;class Main { public static void main(String[] args) {ConcurrentHashMap<String, Integer> numbers = new ConcurrentHashMap<>();numbers.put('One', 1);numbers.put('Two', 2);numbers.put('Three', 3);System.out.println('ConcurrentHashMap: ' + numbers);// 根據指定的key刪除map中的元素,并將該元素返回int value = numbers.remove('Two');System.out.println('Removed value: ' + value);// 只有當map中存在指定的鍵映射到指定的值時,才會從map中刪除條目,并返回一個布爾值。boolean result = numbers.remove('Three', 3);System.out.println('Is the entry {Three=3} removed? ' + result);System.out.println('Updated ConcurrentHashMap: ' + numbers); }}

輸出結果

ConcurrentHashMap: {One=1, Two=2, Three=3}Removed value: 2Is the entry {Three=3} removed? TrueUpdated ConcurrentHashMap: {One=1}

到此這篇關于Java并發編程之詳解ConcurrentHashMap類的文章就介紹到這了,更多相關Java ConcurrentHashMap內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 山东锐智科电检测仪器有限公司_超声波测厚仪,涂层测厚仪,里氏硬度计,电火花检漏仪,地下管线探测仪 | 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | 青海电动密集架_智能密集架_密集架价格-盛隆柜业青海档案密集架厂家 | 板框压滤机-隔膜压滤机配件生产厂家-陕西华星佳洋装备制造有限公司 | 新车测评网_网罗汽车评测资讯_汽车评测门户报道 | 岩石钻裂机-液压凿岩机-劈裂机-挖改钻_湖南烈岩科技有限公司 | 博莱特空压机|博莱特-阿特拉斯独资空压机品牌核心代理商 | 玉米深加工设备-玉米深加工机械-新型玉米工机械生产厂家-河南粮院机械制造有限公司 | 中式装修设计_全屋定制家具_实木仿古门窗花格厂家-喜迎门 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 间甲酚,间甲酚厂家-山东祥东新材料 | 等离子空气净化器_医用空气消毒机_空气净化消毒机_中央家用新风系统厂家_利安达官网 | 深圳离婚律师咨询「在线免费」华荣深圳婚姻律师事务所专办离婚纠纷案件 | 收录网| 珠海冷却塔降噪维修_冷却塔改造报价_凉水塔风机维修厂家- 广东康明节能空调有限公司 | 熔体泵|换网器|熔体齿轮泵|熔体计量泵厂家-郑州巴特熔体泵有限公司 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | 磁力抛光机_磁力研磨机_磁力去毛刺机_精密五金零件抛光设备厂家-冠古科技 | 示波器高压差分探头-国产电流探头厂家-南京桑润斯电子科技有限公司 | 液压油缸-液压缸厂家价格,液压站系统-山东国立液压制造有限公司 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 搪瓷搅拌器,搪玻璃搅拌器,搪玻璃冷凝器_厂家-淄博越宏化工设备 | 在线悬浮物浓度计-多参数水质在线检测仪-上海沃懋仪表科技有限公司 | 双齿辊破碎机-大型狼牙破碎机视频-对辊破碎机价格/型号图片-金联机械设备生产厂家 | 天津热油泵_管道泵_天津高温热油泵-天津市金丰泰机械泵业有限公司【官方网站】 | 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 热风机_工业热风机生产厂家上海冠顶公司提供专业热风机图片价格实惠 | 一体化隔油提升设备-餐饮油水分离器-餐厨垃圾处理设备-隔油池-盐城金球环保产业发展有限公司 | 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 天津蒸汽/热水锅炉-电锅炉安装维修直销厂家-天津鑫淼暖通设备有限公司 | 陕西鹏展科技有限公司 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 硫化罐-电加热蒸汽硫化罐生产厂家-山东鑫泰鑫智能装备有限公司 | 有声小说,听书,听小说资源库-听世界网 | 安徽华耐泵阀有限公司-官方网站| 中国产业发展研究网 - 提供行业研究报告 可行性研究报告 投资咨询 市场调研服务 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 飞象网 - 通信人每天必上的网站 全球化工设备网—化工设备,化工机械,制药设备,环保设备的专业网络市场。 | 北京企业宣传片拍摄_公司宣传片制作-广告短视频制作_北京宣传片拍摄公司 | 深圳公司注册-工商注册代理-注册公司流程和费用_护航财税 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 |