Why wouldn't you want utilization to be 100%? Anything less means that the encryption isn't done as quickly as it could be. I'm guessing you have other processes that you don't want to starve of CPU time, but the task scheduler should take care that other processes of the same priority keep running as well. If you have other Java tasks in the same JVM that have higher priority, consider running the encryption as its own thread; then you can fiddle around with the thread priority.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com