Я хотел бы знать, что является лучшим шаблоном проектирования для этого: у меня есть бесконечные задачи, которые я могу выполнить, каждая задача имеет различный размер (размер проблемы).Для этого я создал ThreadPool (2 основных пула, 4 максимальных пула) с PriorityBlockingQueue.
Всякий раз, когда я выполняю задачу, она добавляется в пул с приоритетом.Проблема возникает, когда у меня есть 2 задачи, которые могут занять некоторое время (скажем, 10 минут, например), и они заполняют основной пул.Поэтому, всякий раз, когда я пытаюсь отправить новую задачу, я могу проверить, когда они все еще находятся на работе, используя getTaskCount и getCorePoolSize , а затем добавить новую задачу в текущую очередь.Теперь, что происходит, когда две задачи занимают очень много времени (более 5, 10, 20 минут). Как я могу принять новые задачи, которые могут занять 1 секунду, 3 секунды ... и т. Д.?Нужно ли устанавливать тайм-аут на каждый исполняемый файл, который я создаю для своей задачи, чтобы убедиться, что он умирает?
надеюсь, что кто-то может дать какую-то дополнительную руку.спасибо!