赞
踩
标准库里面大部分的集合类,都是线程不安全的~~
少数几个线程安全的 : Vector,Stack,HashTable 虽然线程安全,但是其实不太推荐用
Collections.synchronizedList(new ArrayList);
CopyOnWriteArrayList
不加锁保证线程安全HashMap
本身不是线程安全的.
在多线程环境下使用哈希表可以使用:
只是简单的把关键方法加上了 synchronized
关键字,不推荐使用
因为最大的问题是属于Hashtable
无脑给各种方法加 synchronized
…
而加锁是需要因地制宜的,所以这种方法其实是不太合理的!
ConcurrentHashMap
背后做了很多优化策略!
优化策略:
HashTable
直接在方法上加synchronized
,相当于是对this
加锁,而this
只是针对哈希表对象来加锁,一个哈希表只有一个锁…
意味着:
多个线程,无论这些线程都是如何操作这个哈希表,都会产生锁冲突!!HashTable:
多个线程,无论这些线程都是如何操作的这个哈希表,都会产生锁冲突了!
而
ConcurrentHashMap
做出了改进~
ConcurrentHashMap
不是一把锁,而是多把锁 ~
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/535171
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。