Я бы сделал это с атомом в Clojure:
(def counter (atom 0N))
;; increment the counter
(swap! counter inc)
;; read the counter
@counter
=> 1
Это полностью поточно-ориентированное и удивительно высокое быстродействие.Кроме того, поскольку он использует числовую обработку с прецизионной точностью Clojure, он не уязвим для целочисленных переполнений, так как volatile int может быть .....