线程安全问题
⭐️Hashmap线程不安全问题
-
设计就是线程不安全的
由于并没有在Hashmap源码中加入线程安全策略(synchronized,volited,CAS等)
-
解决方案
- 使用Hashtable
- 使用JUC包中Collections辅助类中的同步方法
- 使用JUC包中ConcurrentHashMap类
⭐️ synchonized关键字和volatitle关键字
-
synchronized关键字是通过jvm层面的 **对象监视器(Monitor)**来实现同步的
-
vilatile是通过CAS来进行同步的(较为轻量)
CAS 比较并交换 保证可见性和有序性
-
多线程的特性
原子性 可见性 有序性