# The many flavors of concurrency in Clojure

DevFeed: [The many flavors of concurrency in Clojure](<https://devfeed.tech/articles/the-many-flavors-of-concurrency-in-clojure-32101.md>)

Original publisher: [Read original article](<https://adambard.com/blog/clojure-concurrency-smorgasbord/>)

Published: 2013-12-06T00:00:00Z

Content type: comparison

Language: en

Sources: [Adam Bard](<https://devfeed.tech/sources/adam-bard.md>)

Topics: [Clojure](<https://devfeed.tech/topics/clojure.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Code](<https://devfeed.tech/topics/code.md>), [Apache Pulsar](<https://devfeed.tech/topics/pulsar.md>)

Tags: [clojure](<https://devfeed.tech/tags/clojure.md>), [code](<https://devfeed.tech/tags/code.md>), [comparison](<https://devfeed.tech/tags/comparison.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [parallel](<https://devfeed.tech/tags/parallel.md>), [thread](<https://devfeed.tech/tags/thread.md>)

## AI overview

A comparison of four ways to implement a parallel word-counting program in Clojure: Lamina threaded channels, Pulsar actor-style concurrency, core.async channels, and core.reducers. The article also discusses when the simpler reducer implementation may be preferable and notes that the Lamina example uses long-running workers.

## Source excerpt

Clojure, being the extensible, malleable, rewritable language that it is, is spoiled for choice when it comes to making your cores work for you. You can pick your poison when it comes to making your program concurrent.