什么是惯用的 Clojure 方法来创建一个在后台循环的线程,对某些共享引用进行更新并管理其生命周期?我发现自己正在future
为此使用,但感觉有点像黑客,因为我从不返回有意义的值。例如:
(future (loop [] (do
(Thread/sleep 100)
(dosync (...))
(recur))))
future-cancel
另外,当不再需要后台处理时,我需要注意这一点。关于如何在 Clojure/Swing 应用程序中编排它的任何提示都会很好。JComponent
例如,添加到我的 UI 中负责在窗口关闭时终止线程的虚拟对象可能是一个想法。