Map 线程安全四种方法:

1、使用 synchronized 关键字,代码如下

synchronized(anObject) {

value=map.get(key);

}

2、使用 JDK1.5提供的锁(java.util.concurrent.locks.Lock)

lock.lock();

value=map.get(key);

lock.unlock();

3、使用 JDK1.5 提供的读写锁(java.util.concurrent.locks.ReadWriteLock)

rwlock.readLock().lock();

value=map.get(key);

rwlock.readLock().unlock();

4、使用 JDK1.5 提供的 java.util.concurrent.ConcurrentHashMap(并发哈希) 类。该类将 Map 的存储空间分为若干块,每块拥有自己的锁,减少了多个线程争夺同一个锁的情况。

Map conMap = new ConcurrentHashMap();

比较:

1、不同步确实最快,与预期一致。

2、四种同步方式中,ConcurrentHashMap 是最快的,接近不同步的情况。

3、synchronized 关键字非常慢,比使用锁慢了两个数量级。如果需自己实现同步,则使用 JDK1.5 提供的锁机制,避免使用 synchronized 关键字。

原文链接:https://blog.csdn.net/sswqzx/java/article/details/88954897

java map 线程安全_Map线程安全的四种实现方法相关推荐

  1. java 数组排序论文_Java中运用数组的四种排序方法

    标签: <1>利用Arrays带有的排序方法快速排序 import java.util.Arrays; 2 public class Test2{ public static void m ...

  2. java连接智能电表_智能电表的四种读取方法

    新式的智能电表与老式电表相比,智能电表具有计量精度高.智能扣费.电价实时查询.电量记忆.抄表时间冻结.余额报警.信息远程传送等功能特性,能最大限度避免人为错误,还能有效防止窃电行为. 目前,国内智能电 ...

  3. 【转】Java中字符串中子串的查找共有四种方法(indexof())

    原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下: 1.int ...

  4. Java中字符串中子串的查找共有四种方法(indexof())

    2019独角兽企业重金招聘Python工程师标准>>> public class FirstDemo { /** *API中String的常用方法 */ // 查找指定字符串是否存在 ...

  5. java的四种输入方法,你会几种?

    java的输入方法最常见的就是Scanner的方法,我经过查阅一些资料发现了输入方法原来还有那么多种,可以玩出不少花样,下面是我总结出的四种输入方式,有需要的可以拿去 1.Scanner相关的功能 S ...

  6. java从1到9构建完全二叉树_Java完全二叉树的创建与四种遍历方法分析

    Java完全二叉树的创建与四种遍历方法分析 发布时间:2020-10-01 11:58:56 来源:脚本之家 阅读:87 作者:泡0沫 本文实例讲述了Java完全二叉树的创建与四种遍历方法.分享给大家 ...

  7. iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用(上)

    2017-07-08 remember17 Cocoa开发者社区 目的 本文主要是分享iOS多线程的相关内容,为了更系统的讲解,将分为以下7个方面来展开描述. 多线程的基本概念 线程的状态与生命周期 ...

  8. C/C++中退出线程的四种解决方法

    退出线程可以有四种方法: 1.线程函数的return返回(最好这样): 其中用线程函数的return返回, 而终止线程是最安全的, 在线程函数return返回后, 会清理函数内申请的类对象, 即调用这 ...

  9. Java中Map的 entrySet() 详解以及用法(四种遍历map的方式)

    Entry 由于Map中存放的元素均为键值对,故每一个键值对必然存在一个映射关系.  Map中采用Entry内部类来表示一个映射项,映射项包含Key和Value (我们总说键值对键值对, 每一个键值对 ...

最新文章

  1. Vmware下Centos7安装预览
  2. android点击屏幕特效,Android自定义控件(特效一) 点击屏幕,根据所点击的位置绘制圆环...
  3. px4原生源码学习二--实时操作系统篇
  4. 如何查看S/4HANA指定时间段批量生产订单的状态
  5. Hibernate基本概念 (2)
  6. dp笔记:关于DP算法和滚动数组优化的思考
  7. 用c语言实现简单的tcp协议,实现一个简单的TCP协议下的C/S
  8. CString、char*之间的相互转换
  9. pytorch 中nn.MaxPool1d() 和nn.MaxPool2d()对比
  10. Apache环境.htaccess伪静态301跳转(www与不带www)
  11. 软考-程序员-知识点汇总
  12. excel使用教程_正版办公软件教程书Word Excel PPT办公应用从入门到精通教学加视频!...
  13. 车牌检测STN:Spatial Transformer Networks
  14. 自己写个基金分析系统,准确率也太高了
  15. win10升级补丁_干掉烦人的win10升级助手gwx
  16. 100个优秀jQuery插件精选
  17. 基于Java语言在窗体上实现飞机大战小游戏
  18. java enhancer_执行trace命令抛异常,Enhancer error,java.lang.ClassFormatError: null
  19. 页面调用ADB操作Android设备
  20. python调用谷歌翻译__201907

热门文章

  1. 成本要素和成本中心的区别
  2. 计算机专业是绩点重要,东北大学13级绩点排名-计算机专业
  3. MessageBeep sndPlaySound PlaySound 音频播放
  4. android程序崩溃后,在appuard混淆之后,Android应用程序崩溃了
  5. 游戏本推荐排行榜“黑马”游戏能力测评
  6. java相机_java语言调用摄像头 (不是照相机)
  7. 压力测试及缓存服务器
  8. 【电力电子技术速通】七、PWM控制技术
  9. python 3爬虫学习笔记(2)—— 通过属性查找标签
  10. 【VUE项目实战】54、商品添加功能(四)-商品图片上传模块