Starting a new process for every task is heavy, because each one gets its own memory and switching between them costs time. Threads let one process do several things at once while sharing the same memory. Use threads when tasks need to share data cheaply, like a web server handling many clients. Use separate processes when you need isolation, since one crashing thread can take the whole process down and shared memory brings race conditions.