下面列出了java.util.concurrent.DelayQueue#toArray ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* toArray contains all elements
*/
public void testToArray() throws InterruptedException {
DelayQueue q = populatedQueue(SIZE);
Object[] o = q.toArray();
Arrays.sort(o);
for (int i = 0; i < o.length; i++)
assertSame(o[i], q.take());
}
/**
* toArray(a) contains all elements
*/
public void testToArray2() {
DelayQueue<PDelay> q = populatedQueue(SIZE);
PDelay[] ints = new PDelay[SIZE];
PDelay[] array = q.toArray(ints);
assertSame(ints, array);
Arrays.sort(ints);
for (int i = 0; i < ints.length; i++)
assertSame(ints[i], q.remove());
}
/**
* toArray(incompatible array type) throws ArrayStoreException
*/
public void testToArray1_BadArg() {
DelayQueue q = populatedQueue(SIZE);
try {
q.toArray(new String[10]);
shouldThrow();
} catch (ArrayStoreException success) {}
}
/**
* This method will be called when a response with changed config is received from upstream
* (content or generation has changed) or the server timeout has elapsed.
*
* @param config new config
*/
public void updateSubscribers(RawConfig config) {
log.log(Level.FINE, () -> "Config updated for " + config.getKey() + "," + config.getGeneration());
DelayQueue<DelayedResponse> responseDelayQueue = delayedResponses.responses();
log.log(Level.FINEST, () -> "Delayed response queue: " + responseDelayQueue);
if (responseDelayQueue.size() == 0) {
log.log(Level.FINE, () -> "There exists no matching element on delayed response queue for " + config.getKey());
return;
} else {
log.log(Level.FINE, () -> "Delayed response queue has " + responseDelayQueue.size() + " elements");
}
boolean found = false;
for (DelayedResponse response : responseDelayQueue.toArray(new DelayedResponse[0])) {
JRTServerConfigRequest request = response.getRequest();
if (request.getConfigKey().equals(config.getKey())
// Generation 0 is special, used when returning empty sentinel config
&& (config.getGeneration() >= request.getRequestGeneration() || config.getGeneration() == 0)) {
if (delayedResponses.remove(response)) {
found = true;
log.log(Level.FINE, () -> "Call returnOkResponse for " + config.getKey() + "," + config.getGeneration());
rpcServer.returnOkResponse(request, config);
} else {
log.log(Level.INFO, "Could not remove " + config.getKey() + " from delayedResponses queue, already removed");
}
}
}
if (!found) {
log.log(Level.FINE, () -> "Found no recipient for " + config.getKey() + " in delayed response queue");
}
log.log(Level.FINE, () -> "Finished updating config for " + config.getKey() + "," + config.getGeneration());
}
/**
* toArray contains all elements
*/
public void testToArray() throws InterruptedException {
DelayQueue q = populatedQueue(SIZE);
Object[] o = q.toArray();
Arrays.sort(o);
for (int i = 0; i < o.length; i++)
assertSame(o[i], q.take());
}
/**
* toArray(a) contains all elements
*/
public void testToArray2() {
DelayQueue<PDelay> q = populatedQueue(SIZE);
PDelay[] ints = new PDelay[SIZE];
PDelay[] array = q.toArray(ints);
assertSame(ints, array);
Arrays.sort(ints);
for (int i = 0; i < ints.length; i++)
assertSame(ints[i], q.remove());
}
/**
* toArray(incompatible array type) throws ArrayStoreException
*/
public void testToArray1_BadArg() {
DelayQueue q = populatedQueue(SIZE);
try {
q.toArray(new String[10]);
shouldThrow();
} catch (ArrayStoreException success) {}
}