第十七讲 BlockingQueue
1 阻塞队列
队列:是一种数据结构,先进先出。排队。FIFO
对于普通的队列而言:如果队列空了,还要从队列中移除数据就会抛异常。
这种队列不适合用在高并发场景下。因为高并发场景下,
取数据是一条线程,写数据是另一条线程
取不到数据的时候,也就是队列空了
取线程应该阻塞,等待队列中有数据,一旦有数据,该线程被唤醒。
也就是说,get()不到的时候,应该wait()
一旦另外一条写线程put()成功,notify/notifyAll(),让阻塞的线程醒来去取数据
如果队列满了,写入队列的线程就应该阻塞wait(),等待读线程读取数据,读后通知写线程
进行put操作。
队列这玩意本来效率就差。但是它有序。我们看实现,如果用数组,查询效率高,增删效率差
如果是链表,查效率低,增删效率高。map无序。
队列:是一种数据结构