A way for a program to fork (or split) itself into two or more simultaneously (or pseudo-simultaneously) running tasks. In general, a thread is contained inside a process and different threads in the same process share some resources while different processes do not. (source: Wikipedia)