使用例子:
/*
* Created on 2004-8-25
*
*/
package test1;
import java.util.concurrent.locks.ReentrantLock;
/**
* @author <a href="mailto:Azure_2003@126.com">Azure</a>
*
*/
public class Foo {
private int number = 0;
public static void main(String[] args) {
Foo foo = new Foo();
ReentrantLock lock = new ReentrantLock();
lock.lock();
System.out.println(" lock " + lock.getHoldCount());
lock.unlock();
System.out.println(" lock " + lock.getHoldCount());
}
}
打印结果为:
lock 1
lock 0
一、ArrayBlockingQueue
ArrayBlockingQueue继承了AbstractQueue,实现了BlockingQueue接口,使用的方法和LinkedBlockingQueue一样,但是ArrayBlockingQueue队列是基于数组的,它必须在构造的时候确定数组的大小,它是没有无参构造子的,性能是非常高的。
二、DelayQueue
DelayQueue是ArrayBlockingQueue的兄弟,它有put(Delayed),get(Delayed)等方法可以在延迟一段时间之后把Object对象保存起来,用的是合成模式。