Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


  • Define protocol for async task execution
    • (defprotocol Executor (exec `[e task]))
  • Provide several implementations
    • for ThreadPoolExecutor
    • for ForkJoinPool 
      • Repackage jsr166y into our own packages (put in Clojure 1.6)
      • Allow user to use jsr166e instead?
      • Use built-in JDK version
  • The general ordering of "bestness" is:
    • JDK 1.6: jsr166y >> Clojure ForkJoinPool >> ThreadPoolExecutor
    • JDK 1.7: jsr166e >> jsr166y >> Clojure ForkJoinPool >> JDK ForkJoinPool
    • JDK 1.8: jsr166e >> JDK ForkJoinPool
  • Allow user to override the implementation we chose with their own custom executor that does whatever they want
    • Done via an "install" api which is presumed to be called prior to system use and updates the executor in an atom

Table of what version you'll get depending on your environment based on the ordering rules above: