Programs, processes, and threads are related but distinct concepts. A program is a passive set of instructions stored on disk. When executed, a program becomes an active process, which has its own memory space and resources. A process can contain multiple threads of execution that can run concurrently within the same memory space, allowing for parallelism. Threads are lightweight in comparison to processes and provide a way to improve application performance through parallel computing.