Quick reference for Clojure’s state and async tools: atoms/refs/agents plus futures/promises and related utilities.
Concurrency in Clojure starts with immutable values, then adds a small set of explicit tools for “change over time.” That is different from the Java habit of mutating objects and protecting them with locks.
Use this section as a quick refresher on when to reach for atoms, refs, agents, futures, and related utilities—especially when you are reviewing concurrent code and want to sanity-check its shape.