我想启动一个必须继续运行的clojure启动服务器。所以我创建了一个-main
函数,以便我可以运行./build.boot
并执行main函数。在main函数中,我启动一个非守护进程线程,只要存在非守护进程线程,JVM就会继续运行。但是,启动脚本会停止,我的服务器也会停止。我做错了什么?
#!/usr/bin/env boot
(defn -main [& args]
(let [t (Thread. #(loop []
(println (java.util.Date.))
(Thread/sleep 500)
(recur)))]
(.setDaemon t false)
(.start t)
(Thread/sleep 3000)
(println "I have started a non-daemon thread, but still I exit???")))
输出
#inst "2016-06-23T08:39:23.453-00:00"
#inst "2016-06-23T08:39:24.005-00:00"
#inst "2016-06-23T08:39:24.507-00:00"
#inst "2016-06-23T08:39:25.009-00:00"
#inst "2016-06-23T08:39:25.511-00:00"
#inst "2016-06-23T08:39:26.013-00:00"
I have started a non-daemon thread, but still I exit???
之后脚本结束。
答案 0 :(得分:1)