+1 to use a custom ThreadFactory for better thread names. I would also use `newCachedThreadPool()` instead of `newFixedThreadPool()`, at least during tests we shouldn't create all the threads if we don't need them.

I don't have any idea on the persistence manager's number of threads, but the number of threads sounds like something that the user should be able to change.