Cautions about Threads
lReasoning about concurrent programs is inherently more difficult than reasoning about sequential ones.

lThey can exhibit non-deterministic behavior, when variables are shared among threads.