У меня есть очередь, которая в основном представляет собой очередь производителей / потребителей в albahari.com
книга потоков, которая удаляет элемент очереди из очереди, который представляет собой блок выполнения действия, и затем вызывает метод для выполнения списка действий в элементе очереди.
Я могу достаточно легко убить очередь, включив нулевой блок действий, и заблокировать основной поток, выполнив вращение / ожидание с помощью thread.sleep (), пока счетчик очередей не станет равным нулю, и все потоки не упадут за это время! = нулевой цикл, завершая тем самым, но метод, выполняющий последний список действий, может все еще выполнять последний поток.
Вопрос в том, является ли в любом случае обнаружение того, что этот метод все еще имеет поток, выполняющий его, как, например, использование семафора или счетчика с блокировкой для подсчета семафора вверх в начале метода и обратного отсчета в конце. Так что, если он достигает нуля, я знаю, что это не нить.
Это реализация метода уничтожения в интерфейсе, чтобы закрыть его перед вызовом dispose.