
Claypoole: Threadpool Tools for Clojure - lbarrett
http://eng.climate.com/2014/02/25/claypoole-threadpool-tools-for-clojure/
======
lkrubner
Up until now, managing a thread pool in Clojure still meant dropping back to
Java and doing something like this:

[http://www.javacodegeeks.com/2013/01/java-thread-pool-
exampl...](http://www.javacodegeeks.com/2013/01/java-thread-pool-example-
using-executors-and-threadpoolexecutor.html)

Clojure makes Java interop easy, but I hate every moment that I have to use
Java, rather than a library that offers me idiomatic Clojure.

If I understand Claypoole correctly, it removes the need to drop down to Java.
No more ExecutorService.

To my mind, this is awesome.

------
lbarrett
I'm the author, and I'd be happy to answer your questions!

------
languagehacker
Sounds like a cool library but I'd be embarrassed to say I use something named
after the dude from Primus

~~~
lbarrett
Les actually spells it "Claypool", without the e. It's not named after him, I
assure you.

------
lucian1900
While this looks useful, the example is precisely the sort of problem for
which threads aren't useful.

Parallel IO doesn't (necessarily) need to use threads and an explicitly async
API is more flexible and usually easier to understand, especially with CSP
like core.async.

~~~
lbarrett
It's true that parallel IO has less overhead with an asynchronous API, but I
disagree about it being easier to understand. You have to set up callbacks or
start your processes and then wait, and you have to work harder to manage the
degree of parallelism.

If parallel IO was all we needed to do, asynchronous APIs would be the
sensible choice, but for managing parallelism while chaining IO & CPU work,
sharing pools across multiple simultaneous requests, Claypoole's a pretty nice
tool.

------
terranstyler
I asked for something like this a few weeks ago in #clojure, nobody had a
solution. Thanks!

------
w01fe
I'm really excited about this library -- thanks Leon and Climate for releasing
it!

