In programming, threads and processes are different ways of making an application parallel. They both have their essential differences, though. A process is a unit of execution that can stand alone on its own. It has its own data regarding the source. It uses its own space for addresses, and can interact with other processes only through communication systems that the operating system runs specifically for this purpose, i.e. For processes to communicate with each other. A process can have sub-processes as well. A process is created from the perspective of application architecture. A thread, on the other hand, has nothing to do with the architecture of an application. A thread is created for coding purposes. In fact, a major difference between a process and a thread is that a process may consist of numerous threads. These threads within the same process share the same memory space and state. Also, they do not need communication systems run by the OS, they can communicate with each other directly.