The goal is to have separate dedicated thread threads so that activity is not lost in threads, because other actions took up all threads. If any service has its own threadpool, then it is sure that it has a certain number of threads at its disposal and is not so sensitive to the requirements of other services.
When using multiple dedicated threads, if the service requires too many threads, it must wait until the threads become available, introducing back pressure into the system so that it gradually worsens, and since other parts have their own thread pools, they have a chance to catch their parts up . Thus, the idea is that the system should have more stable characteristics when the load changes. In the case when you describe the existence of a separate thread stream for scheduled tasks, make sure that these tasks are launched regardless of how busy the rest of the system is.
Multiple thread pools will require tuning to ensure that each pool has enough threads and not too many. With a single thread, you donβt need to configure and it may sometimes be better to use all the threads, but you may not have the predictability of knowing some important task, so that the threads that it needs to finish on time.
source share