Vector与ArrayList,HashMap与HashTable

开发中哪些地方遇到线程安全的:

  • 集合有些是线程安全的有些是线程不安全的。

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修饰,没有实现同步,所以效率不较高。

你可能感兴趣的:(Vector与ArrayList,HashMap与HashTable)