Difference between "call stack" and "thread stack"

A call stack is a stack data structure that stores information about the active subroutines of a computer program.

What you're calling a thread stackis what i assume is the private stack of a thread.

These two things are essentially the same. They are both stack data structures.

A thread's stack is used to store the location of function calls in order to allow return statements to return to the correct location

Since there usually is only one important call stack, it is what people refer to as the stack.

Here is information about the stack.

Here is information about Stack-based memory allocation.


Each thread has its own call stack, "call stack" and "thread stack" are the same thing. Calling it a "thread stack" just emphasizes that the call stack is specific to the thread.

Bill Venners calls this the Java stack:

When a new thread is launched, the Java virtual machine creates a new Java stack for the thread. As mentioned earlier, a Java stack stores a thread's state in discrete frames. The Java virtual machine only performs two operations directly on Java Stacks: it pushes and pops frames.

The method that is currently being executed by a thread is the thread's current method. The stack frame for the current method is the current frame. The class in which the current method is defined is called the current class, and the current class's constant pool is the current constant pool. As it executes a method, the Java virtual machine keeps track of the current class and current constant pool. When the virtual machine encounters instructions that operate on data stored in the stack frame, it performs those operations on the current frame.

When a thread invokes a Java method, the virtual machine creates and pushes a new frame onto the thread's Java stack. This new frame then becomes the current frame. As the method executes, it uses the frame to store parameters, local variables, intermediate computations, and other data.