Why, oh why doesn\'t java.util.concurrent
provide a queue length indicators for its ExecutorService
s? Recently I found myself doing something like thi
While you can check the queue size directly. Another way of dealing with a queue that's getting too long is making the internal queue bounded.
public static
ExecutorService newFixedThreadPoolWithQueueSize(int nThreads, int queueSize) {
return new ThreadPoolExecutor(nThreads, nThreads,
5000L, TimeUnit.MILLISECONDS,
new ArrayBlockingQueue(queueSize, true));
}
This will cause RejectedExecutionExceptions (see this) when you exceed the limit.
If you want to avoid the exception the calling thread can be hijacked to execute the function. See this SO question for a solution.