@morj111
WebKid

Как установить максимальное время ожидания в очереди используя Thread Pool Executor?

Есть ли способ установить ограничение по времени для каждого запроса из очереди в пул?

У меня есть класс, наследующий ThreadPoolExecutor
public class TaskPool extends ThreadPoolExecutor {

public TaskPool (int initialCountOfThreads, int maxPollSize) {
    super(initialCountOfThreads, maxPollSize, 100, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(150));
  }

Я добавляю задачи в пул потоков
TaskPool taskPool = new TaskPool(2, 50);
for (int i = 0; i < 50000000; i++) {
    task = new Task("Test" + i);
    taskPool.execute(task);
}

И все задачи, которые находятся в очереди, находятся там, пока она не будет заполнена, а точнее, до 150, и я хочу, чтобы задачи в очереди были удалены через некоторый период времени, если они не включены в пул

com.company.example.TaskPool@2d6a9952[Running, pool size = 50, active threads = 48, queued tasks = 150, completed tasks = 7430]
  • Вопрос задан
  • 182 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы