Liking cljdoc? Tell your friends :D

knit Build Status cljdoc badge

Thin wrapper around Java Executors/Threads, including executors aware versions of future, clojure.core.async/thread, clojure.core.async/thread-call and future-call.

Installation

Clojars Project

Changelog

1.0.0

  • Breaking changes : there are no longer a single arg versions of knit/future and knit/thread, just use clojure.core equivalents in these cases. Also the multi arg version of these 2 macros now takes the option map as last argument instead of first.

Usage

(use 'qbits.knit)

Executors

Executor can be :fixed :cached :single :scheduled, matching the corresponding Java instances.

(def x (executor :fixed))

With all options

(def x (executor :fixed {:num-threads 3 :thread-factory a-thread-factory}))

Submit a task to executor

(execute x #(println "Hello World"))

ThreadFactory

(def tf (thread-factory))

With all options

(def a-thread-group (thread-group "knit-group"))
(def tf (thread-factory {:thread-group a-thread-group
                         :daemon false}))

ThreadGroup

Identical to the Java version

(thread-group "name")
(thread-group parent-group "name")

ScheduledFuture

(schedule :at-fixed-rate 200 #(println "hello world"))

Supports :at-fixed-rate :with-fixed-delay :once, matching the corresponding Java methods.

With all options:

(schedule :at-fixed-rate 2 #(println "hello world")
          {:initial-delay 1
          :executor (executor :scheduled
                              :num-threads 3
                              :thread-factory a-thread-factory)
          :unit :minutes})

Time units are :days :hours :minutes :seconds :milliseconds :microseconds :nanoseconds

Clojure like future and core.async/thread* with configurable execution context

(qbits.knit/future (System/currentTimeMillis) {:executor x})
(qbits.knit/future-call #(System/currentTimeMillis) {:executor x})

;; core.async/thread
(qbits.knit/thread (System/currentTimeMillis) {:executor x} )
(qbits.knit/thread-call #(System/currentTimeMillis) {:executor x})

License

Copyright © 2015 Max Penet

Distributed under the Eclipse Public License, the same as Clojure.

Can you improve this documentation?Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close