As mentioned above, I think ThreadFactory and ThreadPoolExecutorFactory should have a validate phase that allows them to validate their parameters. Each implementation would validate what needs to be validated.