Threads are lightwieight process . Each threads share same address space of process . There are some really great advanatges if we comapre threads as compared to process . Ecah threads have its own register , stack but they all share file and code section . Threads share address space . Even one thread can guide to other threads (ASSISTANCE ) which is not posiible in process . Threads are found to be advanatgeous where we need to handle multiple request . eg in a client server application A server can make use of threads and handle multiple request with multiple threads at the same time . but along with this advanatges , we have only 1 disadvantges ,
it may happen that thread 1 may wirite on thread 2 stack ,-- PROTECTION IS VIOLATED . but this is a rare condition.
(NOTE : each threads have its own stack beacuse they are executing task which are independnt of each other so they need to store there execution history of there task on stack )