This looks remarkably like `ExecutorService`. There are lots of implementations of `ExecutorService` in the wild, so I'm not sure why we would want to create and maintain a class in JUnit that was somewhat like `ExecutorService` but different. I can think of two options

a. Get rid of this, and use `ExecutorService`. If we went this route, I'm not sure I would bother providing our own implementations of `ExecutorService`, since Guava has plenty of well-tested `ExecutorService` implementations to choose from, written by developers extremely knowledgable about concurrency issues and the internals of the JVM

b. Make this class much simpler (perhaps by making some of the methods package-scope, perhaps by moving some of its functionality to Scheduler), and provide a method that takes an `ExecutorService` and returns a scheduling strategy backed by that executor service, and a second method that returns a scheduling strategy that uses a single thread (possibly the calling thread) to do the work.