If you cannot change that AOT compiled code, because it truly is not under your control, is it under your control to evaluate some code like shown below, and somehow ensure that it is evaluated before `require` can be called from multiple threads when your system is starting up? The println's are optional, of course.
(def original-require clojure.core/require)
(defn my-serialized-require [& args]
(locking clojure.lang.RT/REQUIRE_LOCK
(println "my-serialized-require acquired the lock...")
(apply original-require args)
(println "my-serialized-require releasing lock...")))
(alter-var-root #'clojure.core/require (fn [& args] my-serialized-require))
If that isn't possible for you, are you allowed to compile a modified version of Clojure source code and use that in your project? If so, you can modify the definition of `require` to be the locking version.