Tasks are the unit of concurrency in Tokio. This post covers spawning tasks, managing their lifetimes with JoinHandle and JoinSet, cancellation semantics, sharing state between tasks, and the common mistakes that cause memory leaks and unbounded resource consumption.