It has nothing to do with thread pools, only with your thread(s). It depends on what you are doing. In many cases, you really want to use 100% CPU, why not?
As I can see, you are doing some calculations, without any synchronization with anything. And this is want you really may want. After all, do you want to complete your calculation sooner or not? If you do, why wasting some CPU power? Use it all!
When you, say, start to do something else, for example, using UI in other processes or the UI thread of your own process, those threads will take their share of the CPU load (depending on number of CPU cores and CPU performance, some delays might disturb you a bit, but you need to pay some price for performance).
You really don't need to take care about using less CPU, you only need to take care about wasting of CPU time.
One example where you might waste CPU is polling
. To use your system well, you really should avoid polling by all means, because it wastes performance. Please see:
From your sample, I cannot see anything like that, so you probably don't need to worry
And only if polling or pull is technically unavoidable, you can think about reducing of the CPU load by such a "stupid" thread. One possible alternative technique could be dedicating one of the CPU core to such thread (processor/code affinity
]), to make the rest of the system more predictable and stable in performance; it can help of you have enough CPUs/cores.