Esiste una differenza semantica tra i termini call stack
e thread stack
, nel multithreading Java?Differenza tra "stack di chiamate" e "stack di thread"
risposta
Ogni thread ha il proprio stack di chiamata, "stack di chiamate" e "stack di thread" sono la stessa cosa. Chiamarlo "thread stack" sottolinea semplicemente che lo stack di chiamate è specifico per il thread.
Bill Venners calls this the Java stack:
Quando un nuovo thread viene lanciato, la macchina virtuale Java crea un nuovo stack Java per il thread. Come accennato in precedenza, uno stack Java memorizza lo stato di un thread in frame discreti. La Java virtual machine esegue solo due operazioni direttamente su Java Stacks: spinge e fa scattare i frame.
Il metodo che viene attualmente eseguito da un thread è il metodo corrente del thread. Il frame dello stack per il metodo corrente è il frame corrente. La classe in cui viene definito il metodo corrente viene chiamata classe corrente e il pool costante della classe corrente è il pool costante corrente. Eseguendo un metodo, la Java virtual machine tiene traccia della classe corrente e del pool costante corrente. Quando la macchina virtuale incontra le istruzioni che operano sui dati memorizzati nello stack frame, esegue quelle operazioni sul frame corrente.
Quando un thread richiama un metodo Java, la macchina virtuale crea e inserisce un nuovo frame nello stack Java del thread. Questo nuovo fotogramma diventa quindi il fotogramma corrente. Mentre il metodo viene eseguito, utilizza la cornice per memorizzare parametri, variabili locali, calcoli intermedi e altri dati.
A call stack
è un stack data structure
che memorizza le informazioni sulle subroutine attive di un programma per computer.
Quello che si chiama thread stack
è quello che presumo sia lo stack privato di un thread.
Queste due cose sono essenzialmente le stesse. Sono entrambi stack data structures
.
stack di un thread viene utilizzato per memorizzare la posizione di chiamate di funzione al fine di consentire le dichiarazioni di ritorno per tornare alla posizione corretta
Poiché ci solito è solo un importante stack di chiamate, è ciò che la gente fare riferimento allo allo stack.
Here è informazioni sullo stack.
Here è informazioni sull'assegnazione di memoria basata su stack.
Ogni thread ha il proprio stack, ogni chiamata di metodo utilizza una nuova area di quella pila. Ciò significa che quando un metodo chiama se stesso (ricorsione), avrà un nuovo set di variabili locali.
Ho sempre pensato a loro come alla stessa cosa. Ma sono disposto ad avere il mio mondo infranto da altre opinioni. – sstan