## 引子
我们知道Java程序中有一些比较隐蔽的问题,程序运行时是不会报错的,但是结果就是不对。
比如精度丢失问题,需要注意类型的范围。
![](https://img.kancloud.cn/24/92/2492c84ecea82213d038686869fc8e04_570x278.png)
还有一些是在多线程环境下会出现的问题,我们来看多线程并发下的ArrayList和HashMap容器的表现。
ArrayList:
![](https://img.kancloud.cn/03/51/035174b7ec43ac2ad710b236efab1c25_1520x1164.png)
HashMap:
![](https://img.kancloud.cn/cc/94/cc94104f7377f387b514003f851b5911_1414x1270.png)
既然普通的容器在多线程并发环境下会出现问题,那么还有哪些并发容器可供我们使用呢?
## 并发容器包装工具类
可以使用线程安全工具类包装后得到线程安全的容器,如:
~~~
Map<String, String> map = Collections.synchronizedMap(new HashMap<>());
~~~
工具类支持的包装方法如下图:
![](https://img.kancloud.cn/6a/49/6a49a6764d0d122969b435a12ea1325b_1200x426.png)
该方式是通过`SynchronizedMap`使用`synchronized`实现线程安全的,并发级别高的场景下,请使用其他的解决方案。
## 专用并发容器
* ConcurrentHashMap
* CopyOnWriteArrayList
* ConcurrentLinkedQueue
* BlockingQueue
* ConcurrentSkipListMap
- 面试突击
- Java虚拟机
- 认识字节码
- 000Java发展历史
- 000Macos10.15.7上编译OpenJDK8u
- 001熟悉Java内存区域
- 002熟悉HotSpot中的对象
- 003Java如何计算对象大小
- 004垃圾判定算法与4大引用
- 005回收堆和方法区中对象
- 006垃圾收集算法
- 007HotSpot虚拟机垃圾算法实现篇1
- 007HotSpot虚拟机垃圾算法实现篇2
- 007HotSpot虚拟机垃圾算法实现篇3
- 008垃圾收集器
- 009内存分配与回收策略
- 010Java虚拟机相关工具
- 011调优案例分析
- 012一次IDEA的启动速度调优
- 013类文件Class的结构
- 014熟悉字节码指令
- 015类加载机制(过程)
- 016类加载器
- IDEA的JVM参数
- Java基础
- Java自动装箱与拆箱
- Java基础数据类型
- Java方法的参数传递
- Java并发
- 001走入并行的世界
- 002并行程序基础
- 003熟悉Java内存模型JMM
- 004Java并发之volatile关键字
- 005线程池入门到精通
- 006Java多线程间的同步控制方法
- 007Java维基准测试框架JMH
- 008Java并发容器
- 009Java的线程实现
- 010Java关键字synchronized
- 011一些并行模式的熟悉
- 单例模式和不变模式
- 生产者消费者模式
- Future模式
- 012一些并行算法的熟悉
- 面试总结
- 长亮一面