Я знаю, что когда я использую cachedThreadPool
, потоки автоматически завершаются, если они простаивают более 60 секунд. Но как я могу убить такие потоки в cachedThreadPool
вручную?
EDIT, чтобы объяснить мою исходную проблему :
Моя проблема заключается в следующем:
У меня есть программа, и пользователь может запускать несколько процессов. И все эти процессы должны выполняться параллельно. Пока все хорошо, но иногда нужно обрабатывать определенные входящие процессы последовательно. И этот случай возникает именно тогда, когда два процесса имеют одинаковый атрибут (один и тот же путь).
Итак, я хотел создать cachedThreadPool, и всегда должен создаваться новый поток, если нет потока, работающего одновременно который имеет тот же путь, что и новый входящий процесс. (к сожалению, я не знаю, как это сделать и какие методы доступны)
Теперь пришла моя мысль. Я всегда хотел дать вновь созданному потоку cachedThreadPool worker, у которого есть очередь (изначально эта очередь содержит пройденный процесс, который должен быть обработан). Затем, как только этот процесс будет обработан, поток должен подождать 60 секунд. Если в течение этих 60 секунд никакой другой процесс в его очереди не будет отправлен, вы можете убить его, иначе он всегда должен обрабатывать очередь. Но, всегда проверяя, есть ли новые процессы в очереди, поток не переходит go в состояние ожидания и не завершается автоматически. Так что я подумал, что могу убить его вручную.