Queue队列
1.基本方法
add(E e)–>在队列中增加一个元素,如果队列满了,则抛出异常。
offer(E e)–>向队列中添加元素,如果满了就返回false。
remove()–>移除并返回头部元素,队列为空则抛出异常。
poll()–>移除并返回头部元素,如果队列为空,则返回null。
element()–>返回不移除头部元素,队列为空则抛出异常。
peek()–>返回不移除头部元素,队列为空返回null。
2.阻塞队列(新增put(E e)方法用于将新数据添加到队列,一般时使用Lock锁实现阻塞)
ArrayBlockingQueue
arrayBlockingQueue一个定长的阻塞队列,因此创建的时候必须制定队列的大小,同时它还可以制定公平性策略,所谓的公平性策略是指:一旦设置为true开启公平性策略,那么,当当前线程处理完之后,会优先让在这个队列上等待时间最长的线程进行操作。这样做的弊端是会影响性能。
由于arrayBlockingQueue内部维护的是一个数组,因此可以进行下表操作。
itemAt(int i)返回指定下表的队列元素,但不删除该元素。
removeAt(int i)移除指定下标的元素,无返回值。
remove(object o)移除某个元素
LinkedBlockQueue
内部维护一个链表,创建时可以指定大小,也可以不指定。不指定时,默认大小时Integer.MAX_VALUE,即int最大值。同时它也没有公平性策略,遵循先进先出的原则。
它提供一个poll(long timeout,long timeunit)方法,
该方法用于删除并返回头部元素,同时制定时间后使元素变为可用。可以理解为在规定时间内,该方法为阻塞状态。
priorityBlockingQueue
可以设置容量,但没有容量限制。带有优先级的队列。并不是先进先出,基于堆栈数据结构。
synchronousQueue
一个没有数据缓冲的阻塞队列,这个队列只能存储一个元素,在队列中的这个元素没有被取走之前,无法存入新的元素
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: