下面列出了怎么用java.util.AbstractQueue的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* 获取指定名称的队列存储实例 如果不存存在,根据create参数决定是否创建
*
* @param name
* @return
* @throws Exception
*/
private AbstractQueue<byte[]> getClientQueue(String name, boolean create) throws Exception {
AbstractQueue<byte[]> queue = queuemMap.get(name);
if (queue == null) {
if (create == true) {
lock.lock();
try {
queue = queuemMap.get(name);
if (queue == null) {
queue = new FQueue(dbpath + "/" + name, logSize);
queuemMap.put(name, queue);
}
} finally {
lock.unlock();
}
}
}
return queue;
}
/**
* 获取指定名称的队列存储实例 如果不存存在,根据create参数决定是否创建
*
* @param name
* @return
* @throws Exception
*/
private AbstractQueue<byte[]> getClientQueue(String name, boolean create) throws Exception {
AbstractQueue<byte[]> queue = queuemMap.get(name);
if (queue == null) {
if (create == true) {
lock.lock();
try {
queue = queuemMap.get(name);
if (queue == null) {
queue = new FQueue(dbpath + "/" + name, logSize);
queuemMap.put(name, queue);
}
} finally {
lock.unlock();
}
}
}
return queue;
}
public Queue<URI> getQueue(String projectName) {
final LinkedHashSetQueue<URI> list = projectNameToChangedResource.get(projectName);
if (list == null)
return uris;
return new AbstractQueue<URI>() {
@Override
public boolean offer(URI o) {
return list.offer(o);
}
@Override
public URI poll() {
if (uris.isEmpty())
return list.poll();
return uris.poll();
}
@Override
public URI peek() {
if (uris.isEmpty())
return list.peek();
return uris.peek();
}
@Override
public Iterator<URI> iterator() {
return Iterators.concat(uris.iterator(), list.iterator());
}
@Override
public int size() {
return uris.size() + list.size();
}
};
}
public void run() {
AbstractQueue<String> queue = new ArrayBlockingQueue<>(GCTest.countDownSize);
for (int i = 0, finishedUnit = 0; ; i = i + 1) {
// Simulate object use to force promotion into OldGen and then GC
if (queue.size() >= GCTest.countDownSize) {
for (int j = 0; j < GCTest.eachRemoveSize; j++) queue.remove();
finishedUnit++;
// every 1000 removal is counted as 1 unit.
if (System.currentTimeMillis() - TIME_ZERO > GCTest.duration * 1000) System.exit(0);
System.out.println(SIMPLE_DATE_FORMAT.format(new Date()) + " finished Units (1K) = " + finishedUnit);
}
queue.add(new String(new char[GCTest.referenceSize]).replace('\0', 'a'));
}
}
/** {@inheritDoc} */
@Override
protected AbstractQueue<T> newCollection() {
return new PriorityQueue<T>();
}
@Override
protected Class<? extends Collection> getExpectedTypeClass() {
return AbstractQueue.class;
}
/** {@inheritDoc} */
@Override
protected AbstractQueue<T> newCollection() {
return new PriorityQueue<T>();
}
/**
* 获取或者创建指定名称的队列存储实例
*
* @param name
* @return
* @throws Exception
*/
private AbstractQueue<byte[]> getClientQueue(String name) throws Exception {
return getClientQueue(name, true);
}
/**
* 获取或者创建指定名称的队列存储实例
*
* @param name
* @return
* @throws Exception
*/
private AbstractQueue<byte[]> getClientQueue(String name) throws Exception {
return getClientQueue(name, true);
}