J'ai lu Java Concurrency in Practice de Brian Goetz et à l'intérieur de la section Stack Confinement, il est mentionné que chaque thread obtient sa propre pile et que les variables locales sont intrinsèquement confinées au thread d'exécution; ils existent sur la pile de threads en cours d'exécution, qui n'est pas accessible aux autres threads. Que signifie-t-il que chaque thread a sa propre pile d'exécution?
10
Réponses:
Vous savez quand vous passez au débogueur pour une raison quelconque, et l'EDI vous donne une trace de pile? Et chaque méthode (cadre de pile) a son propre ensemble de variables locales que vous pouvez examiner dans le débogueur?
C'est la "pile d'exécution" de votre programme. Il montre à quoi ressemble actuellement l'état local de votre programme. Ce que l'auteur dit, c'est que chaque thread obtient sa propre pile d'exécution distincte comme ça. Il a sa propre pile d'appels et chacune des méthodes a ses propres variables locales.
Étant donné que les variables sont stockées dans le cadre de la pile d'exécution et non dans le tas, elles sont uniques au thread en cours d'exécution et ne peuvent pas être partagées directement. Vous pouvez les copier ou transmettre des références à des objets à d'autres threads de différentes manières, cependant, c'est principalement une distinction académique.
la source