线程安全问题
⭐️Hashmap线程不安全问题
-
设计就是线程不安全的
由于并没有在Hashmap源码中加入线程安全策略(synchronized,volited,CAS等)
-
解决方案
- 使用Hashtable
- 使用JUC包中Collections辅助类中的同步方法
- 使用JUC包中ConcurrentHashMap类
⭐️ synchonized关键字和volatitle关键字
-
synchronized关键字是通过jvm层面的 **对象监视器(Monitor)**来实现同步的
-
vilatile是通过CAS来进行同步的(较为轻量)
CAS 比较并交换 保证可见性和有序性
-
多线程的特性
原子性 可见性 有序性
本文探讨了Java中的线程安全问题,特别是关于HashMap的非线程安全设计。由于HashMap在多线程环境下可能导致数据不一致,文章提出了三种解决方案:使用Hashtable、通过Collections.synchronizedMap进行同步包装以及采用ConcurrentHashMap。同时,文章还介绍了synchronized关键字通过对象监视器实现同步,以及volatile关键字如何利用CAS保证可见性和有序性,以确保多线程环境下的原子性和有序性。
1511

被折叠的 条评论
为什么被折叠?



