Semaphore使用介绍 PriorityBlockingQueue使用介绍 DelayQueue使用介绍

2018-02-12 20:47:00
admin
原创 1460
摘要:Semaphore使用介绍 PriorityBlockingQueue使用介绍 DelayQueue使用介绍

一、Semaphore使用介绍

函数说明:

1、void acquire(),获取一个许可,被中断时抛出异常

2、void acquireUninterruptibly(),获取一个许可,不允许被中断;

3、boolean tryAcquire(long timeout, TimeUnit unit),非公平信号量保持不公平,公平信号量保持公平;

4、boolean tryAcquire(),抢占式获取许可,获取不到立即返回;

5、void release(),释放一个许可,任何线程都可以释放;

6、int drainPermits(),清空剩余所有许可;


使用详解:

1、信号量用于维护一个许可集合,默认是非公平信号量,除非指定公平参数;

2、只有一个许可的信号量可以当做互斥锁使用,与锁的区别是任意线程都可以释放信号;


二、PriorityBlockingQueue使用介绍

class PriorityBlockingQueue<E> extends AbstractQueue<E>

1、offer(E e)、add(E e)、put(E e),插入元素;
2、boolean offer(E e, long timeout, TimeUnit unit),插入元素;

3、E poll(),检索并移除元素;

4、E peek(),获取队列顶部元素;

5、E take(),检索并移除元素,如果无法获取则一直等待;

6、E poll(long timeout, TimeUnit unit),检索并移除元素,允许指定超时时间;


使用详解:

1、PriorityBlockingQueue不允许插入null元素,否则抛出NullPointerException;

2、PriorityBlockingQueue维护一个ReentrantLock,保证多线程操作队列不会冲突;

3、PriorityBlockingQueue扩容过程中会释放锁,不影响其它线程插入元素和获取元素;


三、DelayQueue使用介绍

interface Delayed extends Comparable<Delayed>

1、long getDelay(TimeUnit unit),返回对象的剩余延迟时间;


class DelayQueue<E extends Delayed> extends AbstractQueue<E>

1、offer(E e)、add(E e)、put(E e),插入元素;
2、boolean offer(E e, long timeout, TimeUnit unit),插入元素;

3、E poll(),检索并移除元素,如果元素未到期则返回null;

4、E peek(),获取队列顶部元素,如果队列为空则返回null;

5、E take(),检索并移除元素,如果无法获取则一直等待;

6、E poll(long timeout, TimeUnit unit),检索并移除元素,允许指定超时时间;


使用详解:

1、DelayQueue不允许插入null元素,否则抛出NullPointerException;

2、DelayQueue维护一个ReentrantLock,保证多线程操作队列不会冲突;

发表评论
评论通过审核之后才会显示。