계속 실행해야하는 클로저 부팅으로 서버를 시작하고 싶습니다. 그래서 나는 ./build.boot
을 실행할 수 있도록 함수 -main
을 만들었고 main 함수를 실행할 것입니다. main 함수에서 비 데몬 (non-daemon) 쓰래드가있는 한 JVM이 계속 실행한다는 생각으로 비 데몬 쓰레드를 시작합니다. 그러나 부팅 스크립트가 중지되고 내 서버도 중지됩니다. 내가 도대체 뭘 잘못하고있는 겁니까?내 clojure 부트 스크립트가 실행을 멈추는 이유
#!/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???
.
수락한다 : 당신의 산란 스레드가 완료되지 때까지
당신은
-main
기능이 완료되지 않습니다 귀하의 양산 스레드에join
에 작업을 수정해야 그것. – nha