Concettualmente cosa significa quando si dice che ogni thread ottiene il proprio stack?

10

Ho letto Java Concurrency in Practice di Brian Goetz e all'interno della sezione Stack Confinement si dice che ogni thread ottiene il proprio stack e quindi le variabili locali sono intrinsecamente confinate al thread in esecuzione; esistono nello stack di thread in esecuzione, che non è accessibile ad altri thread. Cosa significa che ogni thread ha il proprio stack di esecuzione?

    
posta Geek 31.07.2012 - 06:05
fonte

1 risposta

12

Sai quando interrompi il debugger per qualsiasi motivo e l'IDE ti dà una traccia dello stack? E ogni metodo (stack frame) ha il proprio set di variabili locali che puoi esaminare nel debugger?

Questo è lo "stack esecutivo" del tuo programma. Mostra lo stato locale del tuo programma in questo momento. Quello che l'autore sta dicendo è che ogni thread ha il proprio stack di esecuzione distinto come quello. Ha un proprio stack di chiamate e ciascuno dei metodi ha le proprie variabili locali.

Poiché le variabili sono memorizzate come parte dello stack di esecuzione e non nell'heap, sono univoche per il thread in esecuzione e non possono essere condivise direttamente. Puoi copiarli o passare riferimenti ad oggetti ad altri thread in vari modi, quindi, in genere è una distinzione accademica.

    
risposta data 31.07.2012 - 06:15
fonte

Leggi altre domande sui tag