有哪些集合是线程不安全的?怎么解决呢?

我们常⽤的 Arraylist,LinkedList,Hashmap,HashSet,TreeSet,TreeMap 都不是线程安全的。解决办法很简单,可以使⽤线程安全的集合来代替。

java.util.concurrent 包中提供了很多并发容器供你使⽤:

  1. ConcurrentHashMap:可以看作是线程安全的 HashMap
  2. CopyOnWriteArrayList:可以看作是线程安全的 ArrayList ,在读多写少的场合性能⾮常好,远远好于 Vector .
  3. ConcurrentLinkedQueue:⾼效的并发队列,使⽤链表实现。可以看做⼀个线程安全的LinkedList ,这是⼀个⾮阻塞队列。
  4. BlockingQueue:这是⼀个接⼝,JDK 内部通过链表、数组等⽅式实现了这个接⼝。表示阻塞队列,⾮常适合⽤于作为数据共享的通道。
  5. ConcurrentSkipListMap:跳表的实现。这是⼀个 Map ,使⽤跳表的数据结构进⾏快速查找。
     

猜你喜欢

转载自blog.csdn.net/xhaimail/article/details/131935302
今日推荐