public boolean add(Runnable o)
    {
        try
        {
            boolean isSuccess = queue.offer(o, timeoutMillis, TimeUnit.MILLISECONDS);
            if(!isSuccess)
                throw new IllegalStateException("Queue was full for "+unit.toSeconds(timeoutMillis)+" seconds");
            return isSuccess;
        }
        catch(InterruptedException e)
        {
            throw new IllegalStateException(e);
        }
    }