A thread is a lightweight process that shares the same address and memory space as its parent process. It runs in parallel on the processor cores, thereby giving us parallelism and multitasking capabilities. The fact that it shares the same address and memory space as that of the parent process makes the whole operation of multitasking very lightweight, because there is no context switching overhead involved. In context switching, when a new process is scheduled to be executed, the operating system needs to save the state of the previous process, including the process ID, the instruction pointer, the return address, and so on.
This is a time-consuming activity. Since multitasking with threads doesn't involve the creation of new processes to achieve parallelism, threads provide a very good performance in multitasking activities. Just as in Java...