线程安全
not_in_mountain
这个作者很懒,什么都没留下…
展开
-
HashMap线程不安全原因
在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率高达100%。 原因: 多线程会导致HashMap的Entry链表形成环形数据结构,一旦形成唤醒数据结构,Entry的next结点永远不为空, 就会产生死循环获取entry。 final HashMap map = new HashMap(2); Thread t = new Thread(new Runnabl原创 2017-09-05 00:33:57 · 510 阅读 · 0 评论 -
线程安全与非线程安全
线程安全类: 一般是早期的jdk提供的集合,如Vector、Hashtable(这个t是小写,应该是编写时不规范的历史遗留问题)、StringBuffer; 非线程安全类: 在后期jdk版本逐渐提供并改善性能,如HashMap、LinkedList、ArrayList、StringBuilder等。 因为它们的源码不用synchronized修饰方法和字段,大大提高了执行的性能,但原创 2017-09-02 18:03:09 · 301 阅读 · 0 评论 -
HashMap与Hashtable的区别
首先要明确的是: ①Hashtable是一个古老的map实现类,但是由于那时候还没有map接口,因此它的方法相比map接口老的繁琐, 具有elements和keys两个方法,对应map接口的values和keys;而HashMap实现了Map接口。 其次,再来分析具体区别: ②Hashtable作为早期集合类,考虑到了线程安全的问题,但也因此效率较低; HashMap适用原创 2017-09-03 10:05:07 · 241 阅读 · 0 评论