ConcurrentHashMap的实现原理与使用 ConcurrentHashMap是线程安全且高效的hashmap。本节让我们一起研究一下该容器是如何在保证线程安全的同时又能保证高效的操作。 为什么要使用ConcurrentHashMap 在并发编程中使用HashMap可能导致程序死循环。而使用 ...
分类:
编程语言 时间:
2018-10-01 23:11:11
阅读次数:
187
Map 这样的 Key Value 在软件开发中是非常经典的结构,常用于在内存中存放数据。
本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它就不会有后面的 ConcurrentHashMap。
分类:
其他好文 时间:
2018-08-12 22:24:03
阅读次数:
217
1、线程安全的HashMap 如果需要一个线程安全的HashMap ,可以使用集合工具类的synchronizedMap(Map<K,V> m)方法实现, 进到方法里面, 它返回一个内部类,进入内部类 发现它是用的代理的方法来实现的,所有功能全都由传进来的Map,也就是m实现,它只负责给方法加锁。如 ...
分类:
编程语言 时间:
2018-08-03 16:28:13
阅读次数:
136
cpu多级缓存是计算机底层的东西,面试比较少问道。 java内存模型更加重要。相当于java这门语言相对于计算机底层定义了一个上层的模型,代码执行的操作是基于这个模型。 面试时比如问你对java内存模型的理解。 线程安全性这一章考点特别多,应该足够重视。 TreadLocal常问。并发容器更加重要些 ...
分类:
其他好文 时间:
2018-07-08 00:30:11
阅读次数:
193
一、问:都做过哪些项目,用了什么? 答:用Servlet和Hibernate做过一个简单的登录界面;用SpringMVC Mybatis Redis做过一个宠物商店的系统; 二、问:那你用过Hibernage和Mybatis,那你从你具体使用中感觉到二者的不同是什么? 答:两者都能屏蔽jdbc ap ...
分类:
其他好文 时间:
2018-06-07 20:47:26
阅读次数:
472
三军可夺帅也,匹夫不可夺志也。———《论语》上一篇讲到同步容器类的潜在问题,可以通过两个方法解决。可以通过客户端加锁解决。可以使用并发容器类来解决问题。客户端加锁的方法我们已经知道,所以,这一篇介绍一下并发容器类原理,看它是如何解决这些问题的。下面看下并发容器的框架图:这里写图片描述我们从上图可以看到,它们分为五大类:Map, List, Set,Collection,Queue, 同步容器类都是
分类:
编程语言 时间:
2018-06-05 23:16:38
阅读次数:
250
吾生也有涯,而知也无涯。———《庄子》通过上一篇文章,我们已经知道设计一个线程安全类的原则和步骤,以及在设计过程中我们应当注意的细节。实际上,Java 的集合库包含了线程安全集合和非线程安全集合,可以说 Java 的线程安全集合库就是按照前一篇说到的实例封闭、安全性的委托、组合这几个方式来实现的。这篇主要简单介绍 Java 集合库包含哪些常用的容器类,它们可以简单区分为:非同步集合同步集合并发集合
分类:
编程语言 时间:
2018-06-03 12:24:49
阅读次数:
243
一、同步容器 主要代表有Vector和Hashtable,以及Collections.synchronizedXxx等。 锁的粒度为当前对象整体。 迭代器是及时失败的,即在迭代的过程中发现被修改,就会抛出ConcurrentModificationException。 二、并发容器 主要代表有Con ...
分类:
其他好文 时间:
2018-05-25 13:39:03
阅读次数:
145
AQS全称为AbstractQueuedSynchronizer,是并发容器中的同步器,AQS是J.U.C的核心,它是抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类都依赖它,如ReentrantLock、Semaphore、CyclicBarrier、Reentra ...
分类:
其他好文 时间:
2018-05-12 17:28:00
阅读次数:
171
通常我们保证线程安全策略的方式有以下几种: a、不可变对象 b、线程封闭 c、同步容器 d、并发容器 不可变对象 可参考string类,可以采用的方式是将类声明为final,将所有成员都声明为私有的,对变量不提供set方法,将所有可变成员声明为final,通过构造器初始化所有成员,进行深度拷贝,在g ...
分类:
编程语言 时间:
2018-05-08 14:42:18
阅读次数:
209