当前位置: 首页 > 面试题库 >

请你说明concurrenthashmap有什么优势以及1.7和1.8区别?

况鸿雪
2023-03-14
本文向大家介绍请你说明concurrenthashmap有什么优势以及1.7和1.8区别?相关面试题,主要包含被问及请你说明concurrenthashmap有什么优势以及1.7和1.8区别?时的应答技巧和注意事项,需要的朋友参考一下

考点:集合

Concurrenthashmap线程安全的,1.7是在jdk1.7中采用Segment + HashEntry的方式进行实现的,lock加在Segment上面。1.7size计算是先采用不加锁的方式,连续计算元素的个数,最多计算3次:1、如果前后两次计算结果相同,则说明计算出来的元素个数是准确的;2、如果前后两次计算结果都不同,则给每个Segment进行加锁,再计算一次元素的个数;

1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现,1.8中使用一个volatile类型的变量baseCount记录元素的个数,当插入新数据或则删除数据时,会通过addCount()方法更新baseCount,通过累加baseCount和CounterCell数组中的数量,即可得到元素的总个数;

 类似资料:
  • 本文向大家介绍请你说明一下Map和ConcurrentHashMap的区别?相关面试题,主要包含被问及请你说明一下Map和ConcurrentHashMap的区别?时的应答技巧和注意事项,需要的朋友参考一下 考点:集合 hashmap是线程不安全的,put时在多线程情况下,会形成环从而导致死循环。CoucurrentHashMap是线程安全的,采用分段锁机制,减少锁的粒度。

  • 本文向大家介绍请说明一下线程池有什么优势?相关面试题,主要包含被问及请说明一下线程池有什么优势?时的应答技巧和注意事项,需要的朋友参考一下 考察点:线程池 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能执行。 第三:提高线程的可管理性,线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳

  • 本文向大家介绍请你说明一下int 和 Integer 有什么区别相关面试题,主要包含被问及请你说明一下int 和 Integer 有什么区别时的应答技巧和注意事项,需要的朋友参考一下 考察点:数据类型 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。 Java为每个原始类型提供了封装类。 原始类型封装类

  • 本文向大家介绍请你说明一下ConcurrentHashMap的原理?相关面试题,主要包含被问及请你说明一下ConcurrentHashMap的原理?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JAVA内存模型 ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEntry 用来封装映射表的键 / 值对;Segment 用来充当锁的角色

  • 本文向大家介绍请说明一下sleep() 和 wait() 有什么区别?相关面试题,主要包含被问及请说明一下sleep() 和 wait() 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 考察点:线程 sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,把执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的

  • 本文向大家介绍请你说明,forward 和redirect的区别?相关面试题,主要包含被问及请你说明,forward 和redirect的区别?时的应答技巧和注意事项,需要的朋友参考一下 考察点:资源请求方式   forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中