Обработка подвешенной нити в Java - PullRequest
0 голосов
/ 18 июня 2020

Может ли кто-нибудь подсказать мне, как мы можем обрабатывать поток, если он завис где-то при выполнении задачи в Java?

Предположим, у нас есть 10 потоков, созданных родительским потоком, и первый дочерний поток завис при выполнении в этом сценарии, я хочу, чтобы остальные 9 потоков выполняли свою часть нормально. Итак, сколькими способами мы можем этого добиться? - В Java

PS- Это мне задавали в интервью.

Ответы [ 2 ]

2 голосов
/ 18 июня 2020

Лучше проанализировать, выяснить, почему поток находится в зависшем состоянии, и исправить это. должна быть какая-то причина для перехода в состояние зависания. В противном случае вы можете проверить, завершается ли поток в X milise c или нет. Если не завершается, завершите его.

1 голос
/ 18 июня 2020

Для начала вам следует исследовать и попытаться найти основную причину, из-за которой поток зависает.

С точки зрения реализации, я бы go использовал шаблон слушателя / наблюдателя, где все дочерние потоки могут уведомлять родительский поток после завершения его работы. Для этого родительский элемент будет иметь ссылку на все свои дочерние потоки. Как только все дочерние элементы уведомят родителя, он может безопасно освободить все ресурсы и завершить себя.

В случае, когда дочерний поток никогда не отвечает родительскому, вы можете определить max-time-out, выше которого вы считать поток зависшим и затем завершить его от родительского слушателя.

Надеюсь, это поможет !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...