A thread is a number of events (or states) that must occur one after the other to perform a certain task.
Any event in the thread may cause the thread to suspend if the event cannot be completed.
The multi-threader shell will then re-activate the thread when the event is ready to complete.
A thread will be suspended if it is attempting to give data to a thread that is currently busy.
Here is a simple thread as an example -