1. A computerized method comprising: receiving, via a network interface device, a resource request; identifying, based on data included in the resource request, a client associated with the resource request; determining, based on data stored in a first table, a client group associated with the client; classifying, by executing instructions on at least one computer processor, the resource request into a first processing virtual thread pool of a plurality of processing virtual thread pools, the classifying based at least in part on the client group and a specific resource requested by the resource request, wherein the first processing virtual pool is associated with more than one client group; maintaining, by a servlet container, a counting semaphore for each of the plurality of processing thread pools to track a number of threads utilized by each respective processing thread pool; determining, based on a counting semaphore for the first processing thread pool, a number of processing threads in the first processing virtual thread pool that are in use; determining that the number of processing threads in the first processing virtual thread pool that are in use matches a maximum number of available processing threads for the first processing virtual thread pool; while the number or processing threads in the first processing virtual thread pool that are in use matches the maximum number of available processing threads for the first processing virtual thread pool, blocking the resource request; subsequently determining that the number or processing threads in the first processing virtual thread pool is below the maximum number of available processing threads for the first processing virtual thread pool; in response to determining that the number or processing threads in the first processing virtual thread pool is below the maximum number of available processing threads for the first processing virtual thread pool, assigning the resource request to an available processing thread in the first processing thread pool; incrementing the number of processing threads in the first processing virtual thread pool that are in use; receiving a modify pool request; and in response to receiving the modify pool request, increasing the maximum number of available processing threads for the first processing virtual thread pool and decreasing a maximum number of available processing threads for a second processing virtual thread pool.