Конструктор для ThreadPoolExecutor
имеет аргумент типа для BlockingQueue
как Runnable
.
Давайте предположим, что у меня есть ThreadPoolExecutor
, объявленный так
ThreadPoolExecutor customThreadPool = new ThreadPoolExecutor(numberOfAvailableProcessors,
numberOfAvailableProcessors, 2L,
TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<>(),
Executors.defaultThreadFactory(),
new RejectedExecutionHandler() {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor threadPoolExecutor) {
// Do something here to handle it
}
});
Мой вопрос: когда делать что-то вроде:
customThreadPool.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
return Math.toIntExact(Thread.currentThread().getId());
}
})
Как ThreadPool
справляется с этим, хотя я указал аргумент типа Queue
как Runnable
?
Как эта задача будет поставлена в очередь?