java.util.concurrency 包

November 12, 2018

本文主要学习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、


LRF 记录学习、生活的点滴