Threads are lightweight processes that share resources like memory with other threads in a process. Threads allow a process to split execution across multiple concurrent execution paths or threads. Each thread has its own program counter but shares the process address space. Using multiple threads within a single process is called multithreading and can improve CPU efficiency by enabling more than one part of a process to run simultaneously in user space.