Ваша ошибка в том, что вы пытаетесь выполнить Thread
на ThreadPool
.
Этот выглядит как для работы, потому что Thread
, оказывается, реализует Runnable
, но поскольку поток используется только как Runnable
и не запускается как Thread
, вызов методов, таких как #interrupt()
, не будет иметь желаемого эффекта.
Если вам все еще нужно использоватьпул потоков, вы должны вместо этого изучить использование класса, подобного FutureTask
.Оберните ваш Runnable
в FutureTask
, а затем отправьте задачу в пул потоков.Затем, когда вы хотите прервать задачу, позвоните futureTask.cancel(true)
.