First and foremost, Clojure is compiled, not interpreted. Second, it
is a shared-heap language, just like Java, and a global namespace
language, just like Java (leaving out classloaders). So any libraries
it loads should only need to be loaded (and thus compiled) once, and
shared between threads, just like jars/classes, the only difference
being Clojure's came from text rather than stored bytecode.
Immediately after loading it is precisely the same - shareable
bytecode in memory.
Clojure's runtime is completely thread-safe. And Clojure's fns
implement Callable, and can be handed directly to Java theadpool
managers like the Executors framework.
I don't know anything about NetKernel, but I'm wondering at what point
you feel Clojure code would need to be reloaded.
Rich