Skip to content

Instantly share code, notes, and snippets.

@maacl
Created April 28, 2013 14:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maacl/de1bef7207ba0cee375c to your computer and use it in GitHub Desktop.
Save maacl/de1bef7207ba0cee375c to your computer and use it in GitHub Desktop.
Atom Map as Java ConcurrentHashMap
(defn ^M clj-con-map []
(let [m (atom {})]
(reify M
(put [_ k v] (swap! m assoc k v))
(get [_ k] (get @m k))
(putIfAbsent [_ k v]
(swap! m #(if (get % k)
%
(assoc % k v))))
(replace [_ k v]
(swap! m #(if (get % k)
(assoc % k v)
%))))))
(definterface M
(put [k v])
(get [k])
(putIfAbsent [k v])
(replace [k v]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment