Предположим, что я поставил в очередь рабочий элемент в ThreadPool
, но рабочий элемент блокируется, если нет данных для обработки (чтение из BlockingQueue
). Если очередь пуста и в ней больше не будет работы, то я должен вызвать метод Thread.Interrupt
, если я хочу прервать задачу блокировки, но как сделать то же самое с ThreadPool
?
Код может выглядеть так:
void Run()
{
try
{
while(true)
{
blockingQueue.Dequeue();
doSomething();
}
}
finally
{
countDownLatch.Signal();
}
}
Я знаю, что в этой ситуации лучше всего использовать обычный Thread
, но мне интересно, есть ли ThreadPool
эквивалентный способ прерывания рабочего элемента.