Убить поток вручную в cachedThreadPool Java - PullRequest
1 голос
/ 25 мая 2020

Я знаю, что когда я использую cachedThreadPool, потоки автоматически завершаются, если они простаивают более 60 секунд. Но как я могу убить такие потоки в cachedThreadPool вручную?

EDIT, чтобы объяснить мою исходную проблему :

Моя проблема заключается в следующем:

У меня есть программа, и пользователь может запускать несколько процессов. И все эти процессы должны выполняться параллельно. Пока все хорошо, но иногда нужно обрабатывать определенные входящие процессы последовательно. И этот случай возникает именно тогда, когда два процесса имеют одинаковый атрибут (один и тот же путь).

Итак, я хотел создать cachedThreadPool, и всегда должен создаваться новый поток, если нет потока, работающего одновременно который имеет тот же путь, что и новый входящий процесс. (к сожалению, я не знаю, как это сделать и какие методы доступны)

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

...