在clojure中使用at-at库时应用程序不会退出

时间:2017-01-18 15:36:56

标签: multithreading clojure

我正在使用at-at库并执行单个任务,即

(at-at/after 5000 #(println "hello from the past!") my-pool)

我的申请没有退出。我正在执行

是否可以
(System/exit 0)

在我申请的最后?这是到目前为止关闭应用程序的唯一方法。

1 个答案:

答案 0 :(得分:2)

在内部,at-at使用ScheduledThreadPoolExecutor,它使用非守护程序线程的线程池。在所有非守护程序线程退出之前,JVM不会退出。 at-at提供了一个函数stop-and-reset-pool!,可用于优雅地(工作完成时)或立即停止池,这应该允许JVM退出。

如果您只想强制关机,也可以使用System/exit(但请注意,您的工作实际上不会完成)。