近期发生太多关于集合类使用不当导致的bug, 在此记录下关于hashmap的信息。
https://gist.github.com/1081908
http://www.iteye.com/topic/962172
http://blog.sina.com.cn/s/blog_5465f7f20100tugf.html
http://blog.csdn.net/cleverpig2003/article/details/249844
问题列表:
1. hashmap.get() 导致cpu100%
2. hashmap.get()值不正确
……
剖析:
1. hashmap是非线程安全,所以也无须谈其数据是否正确。
2. 高并发下,hashmap的设计,可能会导致链表闭环。(可看hashmap的源码,hash冲突和动态扩容)
3. hashmap动态扩容的成本。大数据量的put,在没有设定容量的情况下,会有些问题.
建议:
1. 多看集合类的源码实现
2. 多看java.util.concurrent.*