Я только что обнаружил интересную особенность :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)
, где часы - это атом, который я наблюдаю, ХОРОШО, если я тогда поменяю атомный обмен! функция (скажем, изменить + для -) в clock-update и (use :reload-all 'myns)
, а затем угадать, что эта функция используется для обновления атома для существующих потоков! Я этого не ожидал. Я думал, что существующие потоки будут продолжать ссылаться на любую функцию, с которой они были созданы.