Hashtable 部分源码

以 Hashtable 的 put 方法为例:

Hashtable 保证线程安全的方式在 方法前加上 synchronized 关键字(锁的是类的实例)

Collections.synchronizedMap() 的部分源码

Collections.synchronizedMap() 会调用 静态内部类SynchronizedMap 的构造器 SynchronizedMap(Mapm), synchronized 关键字作用的对象mutex 被设置为 this(即类实例)

静态内部类 SynchronizedMap 的另一个构造方法 SynchronizedMap(Mapm, Object mutex) 是传入一个 Object 作为 mutex,可以将此 Object 作为 synchronized 修饰的对象

总结:

1、默认 Hashtable 和 synchrnizedMap 都是锁 类实例,synchrnizedMap 可以选择锁其他的 Object(mutex)

2、Hashtable 的 synchronized 是方法级别的;synchrnizedMap 的 synchronized 的代码块级别的

3、两者性能相近,但是 synchrnizedMap 可以用 null 作为 key 和 value

参考资料:

1、Difference between Hashtable and Collections.synchronizedMap(HashMap)

https://stackoverflow.com/questions/8875680/difference-between-hashtable-and-collections-synchronizedmaphashmap

2、JDK1。8 源码

java hashtable 并发_Java 并发容器 —— Hashtable 与 Collections.synchronizedMap(HashMap) 的区别...相关推荐

  1. java对象组合_java并发编程(三): 对象的组合

    对象的组合: 如何将现有的线程安全组件,组合成我们想要的更大规模的程序. 设计线程安全的类: 设计线程安全类的三个要素: 1.找出构成对象状态的所有变量: 2.找出约束状态变量的不变性条件: 3.建立 ...

  2. Java 高并发_JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过!...

    JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过! 1.JPG (37.82 KB, 下载次数: 0) 2018-12-3 09:40 上传 2.JPG (28 ...

  3. java 并发_Java并发防范机制

    1.背景 并发程序开发不可避免地要涉及多线程.多线程协作.数据共享和线程安全等问题.在多线程并发场景下,由于采用数据共享的线程通信模型可能导致多个线程之间并发时相互干扰,影响到程序的正常逻辑.无法保证 ...

  4. java线程池_Java 并发编程 线程池源码实战

    作者 | 马启航 杏仁后端工程师.「我头发还多,你们呢?」 一.概述 笔者在网上看了好多的关于线程池原理.源码分析相关的文章,但是说实话,没有一篇让我觉得读完之后豁然开朗,完完全全的明白线程池,要么写 ...

  5. java线程安全性_Java并发-线程安全性

    1.什么是线程安全性? 在线程安全性的定义中,最核心的就是正确性.当多线程访问调用某个类时,线程之间不会出现错误的交互,不管运行时线程如何交替执行,并且在主调代码不需要任何同步或协同,这个类都能表现出 ...

  6. java投票锁_Java并发编程锁之独占公平锁与非公平锁比较

    Java并发编程锁之独占公平锁与非公平锁比较 公平锁和非公平锁理解: 在上一篇文章中,我们知道了非公平锁.其实Java中还存在着公平锁呢.公平二字怎么理解呢?和我们现实理解是一样的.大家去排队本着先来 ...

  7. java 并发_Java并发原理无废话指南

    专注于Java领域优质技术,欢迎关注 作者: 写程序的康德 网上有不计其数的并发编程文章,甚至有不计其数的书来介绍这个主题.你为什么要花10分钟时间来读完这篇文章呢?我给的答案:"他们全是废 ...

  8. java lock 对象_Java并发编程锁系列之ReentrantLock对象总结

    Java并发编程锁系列之ReentrantLock对象总结 在Java并发编程中,根据不同维度来区分锁的话,锁可以分为十五种.ReentranckLock就是其中的多个分类. 本文主要内容:重入锁理解 ...

  9. java计算时间差_JAVA并发编程三大Bug源头(可见性、原子性、有序性),彻底弄懂...

    原创声明:本文转载自公众号[胖滚猪学编程]​ 某日,胖滚猪写的代码导致了一个生产bug,奋战到凌晨三点依旧没有解决问题.胖滚熊一看,只用了一个volatile就解决了.并告知胖滚猪,这是并发编程导致的 ...

最新文章

  1. Android学习书籍参考
  2. R可视化ggplot2绘制堆叠的条形图(Stacked Barplot)
  3. mysql 半同步复制_Mysql半同步复制原理及问题排查
  4. Redis——学习之路一(初识redis)
  5. ffmpeg编译 MingW + MSYS
  6. python tfidf特征变换_机器学习的“万能模板” - 数据分析
  7. Chrome 73 DevTools 新功能之 Logpoints
  8. 数据加载中gif_淮师大GIF加载中......
  9. QT 编写 STC系列MCU烧录软件
  10. 浅谈CPRI原理及测试解决方案(转)
  11. 【文档/键值数据库】文档数据库和键值数据库有什么区别
  12. (8.1)基于牛顿-欧拉公式的动力学方程
  13. HTML页面浏览历史,浏览历史记录功能
  14. easyUI设置行高
  15. 执行npm install报错:npm ERR! code EINTEGRITY
  16. A Deep Q-Network for the Beer Game: A Reinforcement Learning Algorithm to Solve Inventory Optimizati
  17. Kaggle案例精选——电信客户流失预测(Telecom Customer Churn Prediction)Part One:数据说明;数据导入、处理;数据总览;描述性分析
  18. Oliver Wyman的一年制PTA面试
  19. 深度deepin更新失败升级失败
  20. 怎么抵抗DDOS攻击?

热门文章

  1. Linux环境配置1
  2. 去掉烦人的“正在配置Windows”
  3. Heap(堆结构/优先队列)-Swift实现
  4. VMware Data Recovery备份恢复vmware虚拟机
  5. 多进程单线程模型与单进程多线程模型之争
  6. 信息安全系统设计基础实验四:外设驱动程序设计 20145222黄亚奇 20145213祁玮
  7. js控制公共模板中,不同页面中的导航选中效果-判断当前的url
  8. CA knowledge study
  9. 【转载】优酷网首席执行官兼创始人古永锵演讲
  10. windows NT的意义和各个版本