A CPU does not run calculations on several processes at the same time: it does a little bit of one, then another, then goes back to the first one, etc. Because each calculation takes fractions of seconds to execute, it feels for the user that several applications are running at the same time. So process A may keep the CPU 100% busy for 5 ms (milliseconds) then process B for 3 ms, then A again for 2 ms. Keeping in mind each time the CPU is "kept busy", it is used by the process at 100%. Note I have no idea if in reality the order of magnitude is milliseconds, or maybe even shorter.
The percentage of usage you can track will typically indicate how much was used by each process for a sampling period of time. For example if the sampling period is 1 second and over that period we recorded 200ms of usage for process A; this will result in showing 20% usage.
If you want to learn more about how a CPU will decide which process to execute first, you can search on CPU scheduling. This Microsoft article is a good start.
Back to your infered question: how can I prevent a process from showing 100% of usage? You need to set a lower scheduling priority to your process. As a rule of thumb:
- User interface processes would want to have a high priority, in order to avoid the feeling the application is not performing well.
- Ressource consumming processes will be given an average to low priority.
- Non time-critical processes (for example a garbage collector) will be given the lowest priority.
The Scheduling priority section of the article I mentionned above is helpfull.