То, в чем я нуждаюсь, является методом, подобным shutdownNow, но, смочь отправить новые задачи после этого. Мой ThreadPoolExecutor будет принимать случайное число задач во время моего выполнения программы.
Вы можете получить Future каждой отправки, сохранить это Future в коллекции, а затем, когда вы хотите отменить задачи, вызвать future.cancel () для всех задач в очереди.
В этом решении Exectuor все еще работает, и все выполняемые задачи отменяются или не будут выполняться, если они поставлены в очередь.
Почему бы не создать собственную ExecutorService
, которая демонстрирует такое поведение?
Разве недостаточно просто выполнить getQueue() и очистить его? Если вам действительно нужно попытаться остановить запущенные задачи, вам нужно подклассифицировать ThreadPoolExecutor и по существу повторно реализовать shutdownNow(), но только скопировать бит, который посылает прерывание каждому потоку. Учтите, что это все равно не гарантирует, что вы действительно заставите их немедленно прекратить выполнение и не производить дальнейших вычислений. Вам понадобится совершенно другой подход, если вам нужно сделать это.