У меня есть пул потоков с 5 потоками и их будущие ручки хранятся в ArrayList. То, что я хочу сделать, - это вернуться к основному потоку после выхода всех потоков. Моя ситуация заключается в создании программы, которая выполняется бесконечно. Моя концепция проста, но я не уверен, как ее реализовать.Вернуться в основной поток после того, как threadpool выключится?
main()
метод называетthreadManager()
методыthreadManager()
создает потокам- Некоторую нить генерирует исключение и вопросы
futureCancel()
метода, который выдаетfuture.cancel
для всех потоков, а затем закрывает пул потоков - Программы возвращается к основному методу, который снова вызывает
threadManager()
и продолжается.
Не могли бы вы переименовать 'futureCancel' (что-то вроде' restartThreads') и построить вызов 'threadManager' в конце его? (Возможно, вы можете запустить новый поток для запуска 'threadManager', если поток обработки ошибок не является хорошим местом для его запуска.) Мне кажется, что в конце концов вы хотите закрыть все на эту ошибку и запустите все это. 'main' не является особенным; вы можете сделать это любым способом в любом потоке. Одна нота: я бы удостоверился, что существует какой-то чистый способ закрыть приложение. – jpmc26
Вы поняли, что в конце ошибки я должен был закрыть все и перезапустить его. Я думаю, что могу просто сделать futureCancel (restarThread) новым потоком за пределами старого пула, который отключает старый и пул и перезапускает новый. –
У меня есть крюк отключения, который я использую для любого катастрофического события, которое очищает все мои сетевые подключения до неправильного завершения работы. –