If I understand correctly, the Java VM is not exiting. Just some of
it's threads.
That is a very different problem to deal with. That are many
optimizations that are possible when_all_ of the threads are exiting
that are not possible when_many_ threads are exiting.
Do you know if it is simply the cpu time or if it is the lock contention
that is the problem? If it is simply the cpu time we should consider if
some of the locks that can be highly contended should become mutexes.
Or perhaps something like Matthew's cpu pinning idea.