Revise QueueScheduler to support capacity-restricted.
parent
5d5f3bf20e
commit
ac912e8f1f
|
@ -16,11 +16,30 @@ import java.util.concurrent.LinkedBlockingQueue;
|
||||||
*/
|
*/
|
||||||
public class QueueScheduler extends DuplicateRemovedScheduler implements MonitorableScheduler {
|
public class QueueScheduler extends DuplicateRemovedScheduler implements MonitorableScheduler {
|
||||||
|
|
||||||
private BlockingQueue<Request> queue = new LinkedBlockingQueue<Request>();
|
private final BlockingQueue<Request> queue;
|
||||||
|
|
||||||
|
public QueueScheduler() {
|
||||||
|
this.queue = new LinkedBlockingQueue<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a {@code QueueScheduler} with the given (fixed) capacity.
|
||||||
|
*
|
||||||
|
* @param capacity the capacity of this queue,
|
||||||
|
* see {@link LinkedBlockingQueue#LinkedBlockingQueue(int)}
|
||||||
|
* @since 0.8.0
|
||||||
|
*/
|
||||||
|
public QueueScheduler(int capacity) {
|
||||||
|
this.queue = new LinkedBlockingQueue<>(capacity);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void pushWhenNoDuplicate(Request request, Task task) {
|
public void pushWhenNoDuplicate(Request request, Task task) {
|
||||||
queue.add(request);
|
try {
|
||||||
|
queue.put(request);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue