The ruiyun.tools.timer is a Java Timer and TimerTask wrapper for Clojure.
Add the following to your project.clj:
[ruiyun/tools.timer "1.0.1"]
Then execute
lein deps
You can simply start a period task in every 5 seconds immediately like this:
(use 'ruiyun.tools.timer)
(run-task! #(println "Say hello every 5 seconds.") :period 5000)
If you want delay the first run with 2 seconds:
(run-task! #(println "Say hello after 2 seconds.") :dealy 2000)
Use this if you want to execute a task at an absolute time:
(run-task! #(println "Say hello at 2013-01-01T00:00:00 in beijing.") :at #inst "2013-01-01T00:00:00+08:00")
And, you can use the same timer in more than one tasks:
(def greeting-timer (timer "The timer for greeting"))
(run-task! #(println "Say hello after 2 seconds.") :dealy 2000 :by greeting-timer)
(run-task! #(println "Say hello every 5 seconds.") :period 5000 :by greeting-timer)
Finally, you can cancel a timer's tasks:
(cancel! greeting-timer)
For more detailed information on ruiyun.tools.timer, please refer to the documentation.
Copyright (C) 2012 Ruiyun Wen
Distributed under the Eclipse Public License, the same as Clojure.