BlockingQueue的核心方法:
数据入队:
- void put(E e) :把Object加到BlockingQueue里,如果BlockQueue没有空间,则调用此方法的线程被阻断,直到BlockingQueue里面有空间再继续。
- boolean add(E e):把Object加到BlockingQueue里,如果BlockQueue没有空间,则抛出异常IllegalStateException: Queue full。
- boolean offer(E e):如果可能的话,将Object加到BlockingQueue里,如果BlockingQueue可以容纳,则返回true,否则返回false。(本方法不阻塞当前线程)
- boolean offer(E e, long timeout, TimeUnit unit):可以设定等待的时间,如果在指定的时间内,还不能往队列中加入,则返回失败。
数据出队:
- E take():取走BlockingQueue里排在首位的对象,若BlockingQueue为空,阻断进入等待状态直到BlockingQueue有新的数据被加入。
- E poll(long timeout, TimeUnit unit):从BlockingQueue取出一个队首的对象,如果在指定时间内,队列一旦有数据可取,则立即返回队列中的数据。否则直到时间超时还没有数据可取,返回失败。
- int drainTo():一次性从BlockingQueue获取所有可用的数据对象(还可以指定获取数据的个数)add到指定Collection。通过该方法,可以提升获取数据效率。不需要多次分批加锁或释放锁。
本文详细介绍了BlockingQueue的核心方法,包括数据的入队与出队操作。入队方法如put、add、offer及其带超时时间的版本,出队方法如take、poll及drainTo等。这些方法有助于实现线程间的数据传递与同步。
1456

被折叠的 条评论
为什么被折叠?



