a separate path of execution for code
a running executable, which can encompass multiple threads
the abstract concept of work that needs to be performed