The semantics of this have changed a little now. Where before we had basically 2^31 -1 spots for runnables in our queue before we started getting RejectedExecutionException, now we only have 1024 before we start blocking on the ringbuffer. While I probably would not have chosen or MAX_INT size queue for the runnables, I wonder what will happen in the case that statsd is not responding well. My understanding is that to fill a ringbuffer is really bad, and you should never do that. What happens in Disruptor when you fill the ring buffer? Does it wait until all events have been processed, and then release the lock, does it throw an exception, or will it release the lock as soon as it is under capacity again? I think that ideally, I would like to log and error, and then drop the event if the ring buffer is full. What do you think?