前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java 并发面试

java 并发面试

作者头像
DencyCheng
发布2019-10-25 19:42:05
3960
发布2019-10-25 19:42:05
举报
文章被收录于专栏:SpringBootSpringBoot

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_32534855/article/details/99609005

1.ConcurrentHashMap是面试常客,大家对于下面的问题了解吗?

Collections.synchronizedMap()虽然是线程安全的,但是它是通过使用一个全局的锁来同步不同线程间的并发访问,因此会带来较大的性能问题。ConcurrentHashMap的性能大大提升,设计之初就是为了代替Collections.synchronizedMap()。 HashMap(HashSet同理)在多线程下可能造成CPU100%,是为什么? 2.HashMap在Java 7和8有什么不同? 3.JDK8的ConcurrentHashMap也会造成CPU 100%,你知道吗? 4.ConcurrentHashMap在Java 7和8有什么不同? 5.ConcurrentHashMap的扩容过程你了解吗? 6.ConcurrentHashMap与HashMap相比,有什么不同? 7.为什么Map桶中超过8个才转为红黑树? 8.为什么有了Collections.synchronizedMap(),还需要ConcurrentHashMap? 9.同样是线程安全,ConcurrentHashMap和Hashtable 的区别 10.对比Hashtable, HashMap, TreeMap有什么不同?

11.阻塞队列

阻塞队列最大的特点是带有阻塞功能,最有特色的两个带有阻塞功能的方法是: 1    take()方法 获取并移除队列的头结点。通常在队列里有数据的时候,那么就从正常取数据。但是一旦如果执行take的时候,队列里无数据,则阻塞,直到队列里有数据。一旦队列里有数据了,就会立刻解除阻塞状态,并且取到数据。 2    put()方法 插入元素。通常在队列没满的时候,那就是正常的插入,但是如果队列已满,那么就无法继续插入,则阻塞,直到队列里有了空闲空间。当消费者消费了一个元素后,队列有了空闲空间,那么此时队列就会解除阻塞状态,并把刚才那个元素添加进去。

以上过程中的阻塞和接触阻塞,都是用BlockingQueue来完成的,不需要我们自己处理。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档