我刚刚发现:reload-all
的一个有趣特征。说我有:
(defn clock-update [clock] (swap! clock (fn [previousTime] (+ previousTime 1) ) ) )
(def threads (Executors/newScheduledThreadPool 16))
(defn start-clock [clock]
(. threads scheduleAtFixedRate
#(clock-update clock) 0 1 TimeUnit/SECONDS ))
和我(start-clock clock)
时钟是我正在观看的原子,好吧,如果我改变原子交换!函数(例如,更改+ for - )在clock-update和(use :reload-all 'myns)
然后猜测是什么,该函数用于更新现有线程的原子!我没想到。我认为现有的线程会继续引用它们构造的任何函数。
答案 0 :(得分:1)
正如文档解释
def始终适用于根绑定,即使var在调用def的点处是线程绑定的。