多线程中的队列
并发队列
并发队列ConcurrentLinkedQueue(非阻塞队列)
并发与并行:并行是多个Cup,而并发是指资源有限的情况下,两者交替使用资源。交替使用,提高效率。
ConcurrentLinkedQueue是Queue的一个安全实现.Queue中元素按FIFO原则进行排序.采用CAS操作,来保证元素的一致性。
LinkedBlockingQueue是一个线程安全的阻塞队列,它实现了BlockingQueue接口,BlockingQueue接口继承自java.util.Queue接口,并在这个接口的基础上增加了take和put方法,这两个方法正是队列操作的阻塞版本。
阻塞队列
阻塞队列LinkedBlockingQueue
LinkedBlockingQueue 是实现线程安全的,实现了先进先出的特性,是作为生产者消费者的首选。
LinkedBlockingQueue 可以指定容量,也可以不指定,不指定的话,默认最大是Integer.MAX_VALUE,其中主要用到put和take方法,put方法在队列满的时候会阻塞直到有队列成员被消费,take方法在队列空的时候会阻塞,直到有队列成员被放进来。
参考博客:
https://www.cnblogs.com/linjiqin/archive/2013/05/30/3108188.html 并发队列和阻塞队列
https://blog.youkuaiyun.com/xp_zyl/article/details/81531795