Влияет ли переполнение стека только на поток, в котором оно произошло?

#java

#java

Вопрос:

Чтобы представить это в контексте: допустим, я играл в онлайн-игру и создал переполнение стека. Повлияет ли это на всех, кто играет на сервере, или только на меня?

Ответ №1:

Если JVM есть в вашем браузере, определенно нет.

На сервере переполнение стека приведет к эффективному завершению потока. Если в нем отсутствуют finally блоки, поток может умереть, не освободив ресурсы, что может привести к заклиниванию сервера через некоторое время, но он должен освободить все мьютексы, удерживаемые из-за synchonized блоков. Предполагая, что ошибка не обрабатывается, он вызовет thead ThreadUncaughtExceptionHandler , который обычно не отключает сервер, если сервер не выполняет работу в основном потоке, но для отключения сервера может быть реализован обработчик неперехваченных исключений.

Ответ №2:

Это зависит от того, как запрограммирован сервер; и что происходит с StackOverflow. Если оно не перехвачено, это может повлиять на весь сервер.

Комментарии:

1. «Если оно не перехвачено, это может повлиять на весь сервер», это просто неверно. Это приведет к завершению текущего текущего потока (с переполнением стека). Все остальные потоки продолжают выполняться.

2. Да, но если сервер ожидает ответа от этого потока; это может вызвать проблемы и т.д.; Если переменная установлена неправильно, это может повлиять на сервер wohle.