JavaDoc для ThreadPoolExecutor неясно, можно ли добавлять задачи непосредственно в BlockingQueue
, поддерживая исполнителя. Документы говорят, что
Пример
int n = ...; // number of threads
queue = new ArrayBlockingQueue<Runnable>(queueSize);
executor = new ThreadPoolExecutor(n, n, 1, TimeUnit.HOURS, queue);
executor.prestartAllCoreThreads();
// ...
while (...) {
Runnable job = ...;
queue.offer(job, 1, TimeUnit.HOURS);
}
while (jobsOutstanding.get() != 0) {
try {
Thread.sleep(...);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
executor.shutdownNow();
queue.offer()
vs executor.execute()
TL;DR
Учитывая ThreadPoolExecutor
, настроенный следующим образом:
BlockingQueue
, поддерживая исполнителя
Допустимо ли добавлять задачи непосредственно в очередь вместо вызова executor.execute()
?
Похожие
Этот вопрос () аналогичен, но конкретно не предусматривает непосредственного добавления в очередь.