In a nutshell
A process is a running program with its own private workspace of memory — its code, its data, and room to grow. A thread is a single worker doing the actual running inside that workspace. One process can have several threads sharing the same memory, so they coordinate cheaply and quickly; separate processes each get their own walled-off memory, which is safer but heavier to create and slower to talk between.