/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.depgraph;
import java.util.Deque;
import java.util.Iterator;
import java.util.concurrent.ConcurrentLinkedDeque;
/**
* Run queue implementation based on a stack. This is a LIFO queue which may give good performance as computation targets often end up grouped together.
*/
/* package */final class StackRunQueue implements RunQueue {
private final Deque<ContextRunnable> _deque = new ConcurrentLinkedDeque<ContextRunnable>();
@Override
public boolean isEmpty() {
return _deque.isEmpty();
}
@Override
public int size() {
return _deque.size();
}
@Override
public Iterator<ContextRunnable> iterator() {
return _deque.iterator();
}
@Override
public void add(final ContextRunnable runnable) {
_deque.addLast(runnable);
}
@Override
public ContextRunnable take() {
return _deque.pollLast();
}
}