本文主要学习java包中的并发工具学习。
BlockingQueue
java.util.concurrent
包中的阻塞队列接口BlockingQueue
表示一个线程是可以安全放入实例,并且其他线程可以从中获取。
一个阻塞队列一般是一个线程生产,一个线程消费,
当队列到达最大限制,生产数据的线程将会被阻塞,直到消费者从队列中取出一个元素。 当一个消费者尝试从一个空队列中获取元素时,会被阻塞。
BlockingQueue 方法
一个BlockingQueue
有四种不同的方法插入、删除、检查队列中的元素,每一组方法的功能都不太一样,如下是一个方法表。
— | Throws Exception | Special Value | Blocks | Times Out |
---|---|---|---|---|
Insert | add(o) | offer(o) | put(o) | offer(o, timeout, timeunit) |
Remove | remove(o) | poll() | take() | poll(timeout, timeunit) |
Examine | element() | peek() |
这四种不同的操作有不同的功能 1、Throws Exception 如果不能立即执行这个操作,就会抛出异常,比如,如果队列已满,再往里面插入就会抛出异常,或者队列中没有元素,那么一个线程从队列中取元素就会抛出异常。 2、