Yes I agree, but if this cache is relatively idle then it can actually stabilize down.  What if this is configured on 10 different caches, we shouldn't require 10 X N threads always running when we don't know how many will be used.  The threads would still stay alive for the 120 second timeout after a current request, which would allow for good performance even when under load since it will still reuse the same threads.

Personally this is always one of the things that seemed like a bug to me with the TPE in that non core threads won't scale larger than one when you have an unbounded queue.