I don't understand the use cases.

> will serialize to a single thread, like an EDT

 A `Scheduler.Worker` is already single-threaded and work is never scheduled onto a `Scheduler` but a `Scheduler.Worker`.

> use several threads as computation while leaving other CPUs for other tasks or threads.

This would imply no one is using `Scheduler.computation()`, the system default that uses all cores.

> have a fixed, always running pool for I/O and not suffer thread recreation penalty from a CachedThreadScheduler.

The pool would need to be very large, the IO pool should be unbounded as it was before and allowed to grow and shrink as needed, just like `Executors.newCachedThreadPool()`.