Vector与ArrayList,HashMap与HashTab
2018-11-20 本文已影响6人
健倾心语
开发中哪些地方遇到线程安全的:
- 集合有些是线程安全的有些是线程不安全的。
Vector与ArrayList
区别:线程安全
- 查看源码,我们就可以看到,Vector 中的add方法加了synchronized修饰,实现了线程同步,所以是线程安全的,而ArrayList的add方法没有加synchronized修饰,所以是线程不安全的。所以在多线程共享Vector 集合做add操作的时候,效率不高。而ArrayList反而效率会更高。
HashMap与HashTable
区别:线程安全
- HashTable是线程安全的
- HashMap是线程不安全的
- 实现原理:链表+数组 put方法+hashcode取模
- put方法:HashTable加了synchronized修饰;HashMap的没有加synchronized修饰,没有实现同步
- get方法:HashTable加了synchronized修饰,保证线程安全。但是查询效率不高。HashMap的没有加synchronized修饰,没有实现同步,所以效率不较高。