Q: 8071326: ThreadPoolExecutor in endless thread creation loop if workQueue.take() throws RuntimeException

Lev Priima lev.priima at oracle.com
Tue Jan 27 15:43:18 UTC 2015


Using TPE w/ custom BlockingQueue and if RuntimeException happens in 
blocking BlockingQueue.take() method then this code

new ThreadPoolExecutor(1, 1, 0, TimeUnit.NANOSECONDS,
     new ArrayBlockingQueue<Runnable>(1) {
         public Runnable take() throws InterruptedException {
             throw new RuntimeException();
         }
     }
).prestartAllCoreThreads();

has an unbounded thread creation loop.

As a result there are many created unbounded threads in RUNNING state 
after printing stack trace to stderr by default 
UncaughtExceptionHandler. And these thread will be cleaned only when 
whole TPE finished.

Is this "Not an Issue"?

-- 
Lev




More information about the core-libs-dev mailing list