Eu tenho lido Java Concurrency in Practice por Brian Goetz e, na seção Stack Confinement , é mencionado que cada thread obtém sua própria pilha e, portanto, as variáveis locais são intrinsecamente confinadas ao thread em execução; eles existem na pilha de threads em execução, que não é acessível para outros threads. O que ele quer dizer com cada thread com sua própria pilha de execução?
10
Respostas:
Você sabe quando você entra no depurador por qualquer motivo, e o IDE fornece um rastreamento de pilha? E cada método (quadro de pilha) tem seu próprio conjunto de variáveis locais que você pode examinar no depurador?
Essa é a "pilha de execução" do seu programa. Ele mostra como é o estado local do seu programa no momento. O que o autor está dizendo é que cada thread recebe sua própria pilha de execução distinta como essa. Ele possui sua própria pilha de chamadas e cada um dos métodos possui suas próprias variáveis locais.
Como as variáveis são armazenadas como parte da pilha de execução e não na pilha, elas são exclusivas do encadeamento que está sendo executado e não podem ser compartilhadas diretamente. Você pode copiá-los ou passar referências a objetos para outros threads de várias maneiras, portanto, essa é principalmente uma distinção acadêmica.
fonte