1. SynchronizedMap和ConcurrentHashMap有什么区别? 

答:java5中新增了ConcurrentMap接口和它的一个实现类ConcurrentHashMap。ConcurrentHashMap提供了和Hashtable以及SynchronizedMap中所不同的锁机制。比起synchronizedMap来,它提供了好得多的并发性。多个读操作几乎总可以并发地执行,同时进行的读和写操作通常也能并发地执行,而同时进行的写操作仍然可以不时地并发进行(相关的类也提供了类似的多个读线程的并发性,但是,只允许有一个活动的写线程)。Hashtable中采用的锁机制是一次锁住整个hash表,从而同一时刻只能由一个线程对其进行操作;而ConcurrentHashMap中则是一次锁住一个桶。ConcurrentHashMap默认将hash表分为16个桶,诸如get,put,remove等常用操作只锁当前需要用到的桶。这样,原来只能一个线程进入,现在却能同时有16个写线程执行,并发性能的提升是显而易见的。前面说到的16个线程指的是写线程,而读操作大部分时候都不需要用到锁。只有在size等操作时才需要锁住整个hash表。       在迭代方面,ConcurrentHashMap使用了一种不同的迭代方式。在这种迭代方式中,当iterator被创建后集合再发生改变就不再是抛出ConcurrentModificationException,取而代之的是在改变时new新的数据从而不影响原有的数据 ,iterator完成后再将头指针替换为新的数据 ,这样iterator线程可以使用原来老的数据,而写线程也可以并发的完成改变。

2. CopyOnWriteArrayList可以用于什么应用场景?
        答:CopyOnWriteArrayList(免锁容器)的好处之一是当多个迭代器同时遍历和修改这个列表时,不会抛出ConcurrentModificationException。在CopyOnWriteArrayList中,写入将导致创建整个底层数组的副本,而源数组将保留在原地,使得复制的数组在被修改时,读取操作可以安全地执行。

最新文章

  1. GOLANG 基本数据类型 浮点型
  2. [issue] [iOS 10] 升级后无法真机测试 Could not find Developer Disk Image
  3. 安卓使用adb命令安装软件
  4. github生成燃尽图
  5. 为什么使用开源软件(Open Source Software)
  6. input autocomplete 下拉提示+支持中文
  7. 内存错误:CRT detected that the application wrote to memory after end of heap buffer
  8. POJ 1979 DFS
  9. Linux查看文件大小
  10. Win10 禁止自动更新以及禁止Windows 10升级助手(Windows 10 易升)
  11. [NOIP2014D2]
  12. 【PHP】最详细PHP从入门到精通(一)——想学习PHP的朋友们福利来了!
  13. (转载)深度学习的weight initialization
  14. python开发之虚拟环境管理:virtualenv、virtualenvwrapper、pycharm
  15. Postfix 邮件服务 - PostfixAdmin
  16. Filter功能
  17. Docker MySQL5.5镜像
  18. 【收集资料】OpenGL学习
  19. main.jsbundle 脱离掉本地服务
  20. java正则表达式去除html中所有的标签和特殊HTML字符(以&开头的)

热门文章

  1. C#对象转JSON字符串和JSON字符串转对象
  2. linux 学习笔记3
  3. poj 3641 Pseudoprime numbers Miller_Rabin测素裸题
  4. php5函数库
  5. 谈谈java中的WeakReference
  6. Java中Map的用法详解
  7. touches获得手指点击的坐标
  8. jsf2.0视频
  9. (转)GDT与LDT
  10. 2001: [Hnoi2010]City 城市建设 - BZOJ