title: How does a multi-threaded web server affect a Clojure program?
body: <p>I know that you can build multi-threaded Clojure program explicitly using the tools in <code>java.util.concurrent.Executors</code> and language constructs like agents and atoms. However, if I write a Ring app, how will a multi-threaded server (like Jetty or Immutant) change the way it runs? If I do some initialization (e.g. loading configuration, setting up a database connection pool) before I start serving requests, will I end up with duplicated, possibly inconsistent work in different threads? Will each request be handled by one thread?</p>