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.