本文主要介绍Java并发包提供的线程安全队列的相关核心类的用法,包括阻塞先入先出队列,如LinkedBlockQueue和ArrayBlockingQueue,阻塞先入先出双端队列BlockingDeque接口,并发队列ConcurrentLinkedQueue以及写时拷贝列表CopyOnWriteArrayList。
ArrayList和LinkedList是Java在编程中最常用的两个列表类,其中ArrayList是基于数组实现的,LInkedList是基于链表实现的。不过这两个类都不是线程安全的,所以如果需要多线程中使用这两个类,则需要结合Synchronized关键字或ReentrrantLock可重入锁来加锁实现线程同步。
为了方便使用,即不需要在应用代码中对这些列表类的每个方法都显式的使用Synchronized关键字进行同步,可以使用集合工具类Collections的SynchronizedList这个同步列表包装类对ArrayList或LInkedList进行包装。
除此之外,在Java并发包中提供了多个并发列表或者称为并发队列实现,这些并发队列是线程安全的。在多线程编程中,比较常用的包括阻塞、先入先出队列LinkedBlockingQueue和阻塞、先入先出双端队列LinkedBlockingDeque,以及适合与读多写少场景的写时拷贝列表CopyOnWriteArrayList。