【发布时间】:2011-07-14 13:38:51
【问题描述】:
什么是惯用的 Clojure 方法来创建一个在后台循环执行更新某些共享 ref 并管理其生命周期的线程?我发现自己为此使用future,但感觉有点像黑客,因为我从不返回有意义的值。例如:
(future (loop [] (do
(Thread/sleep 100)
(dosync (...))
(recur))))
另外,当不再需要后台处理时,我需要小心future-cancel 这个。关于如何在 Clojure/Swing 应用程序中编排它的任何提示都会很好。例如。添加到我的 UI 中的虚拟 JComponent 负责在窗口关闭时杀死线程可能是一个想法。
【问题讨论】:
标签: multithreading swing clojure dispose ownership