class NonBlockingQueue implements IQueue<T> {

    @Override
    public void addNewItemCallback(final Runnable callback) {
        synchronized (callbacksListLock) {
            newElementCallbacks.add(callback);

            if (!queue.isEmpty()) {
                callback.run();
            }
        }
    }

    public  NonBlockingQueue(final Queue<T> queue);

}