The basis of Clojure's concurrency is its STM system. Basically, this extends the semantics of database transactions to the computer's memory.
For this recipe, we'll use the STM to calculate the families per housing unit from a piece of U.S. census data. We'll use
future-call to perform the calculations in the thread pool and spread the execution over multiple cores. Afterwards, we'll go into more detail about how the STM works in general, and how it's applied in this particular recipe.
To prepare for this recipe, we first need to list our dependencies in the Leiningen
(defproject concurrent-data "0.1.0-SNAPSHOT" :dependencies [[org.clojure/clojure "1.6.0"] [org.clojure/data.csv ...