The StripedExecutor internally uses a stripe of queues and each queue has its own private worker-thread.
When a task is 'executed' on the StripedExecutor, the task is checked if it is a StripedRunnable. If it
is, the right worker is looked up and the task put in the queue of that worker. If the task is not a
StripedRunnable, a random worker is looked up.
If the queue is full and the runnable implements TimeoutRunnable, then a configurable amount of blocking is
done on the queue. If the runnable doesn't implement TimeoutRunnable or when the blocking times out,
then the task is rejected and a RejectedExecutionException is thrown.