Стек вызовов в java - PullRequest
       3

Стек вызовов в java

0 голосов
/ 11 марта 2020

В документации Akka была часть, в которой говорилось о «Иллюзии стека вызовов» , к которой прилагается картинка для его части. Я не понимаю, о чем он говорит, я имею в виду, если основной поток в java создал новый поток и запустил его, если в созданном потоке возникнет какое-либо исключение, основной поток будет уведомлен, так почему он говорит, что «вызывающий» не будет уведомлен?!

The illusion of a call stack

1 Ответ

2 голосов
/ 11 марта 2020

Я имею в виду, если основной поток в java создал новый поток и запустит его, если в любом созданном потоке возникнет исключение, основной поток будет уведомлен

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

«Иллюзия стека вызовов» заключается в том, что концептуальный поток логики c больше не соответствует физическому стеку вызовов, когда вы используете такие вещи, как рабочие очереди для запланировать отдельные задачи в других потоках.

Фактический стек вызовов любой сбойной подзадачи в такой очереди покажет код, связанный с обработкой очереди , но не покажет стек вызовов, связанный с код, который изначально ставил в очередь задачу , которая, возможно, во многих случаях является наиболее интересной.

...