A smallest unit of execution within a process.
It represents a single sequence of instructions that can be scheduled by the system's scheduler.
Multiple threads within a process share the same memory space but have their own registers, program counter, and stack.
This allows them to execute independently while still accessing the same resources and data as other threads in the same process.