Dormindo um encadeamento dentro de um ExecutorService (Java / Clojure)

Eu tenho um número bastante grande de threads sendo criados dentro de um programa de clojure:

(import '(java.util.concurrent Executors)) 
(def *pool*   
  (Executors/newCachedThreadPool))

(defn do-something []
  ; work
  Thread/sleep 200
  ; repeat)

(dotimes [i 10000]
  (.submit *pool* do-something)) 

Faz um tempo entre as JVMs para mim e eu estou basicamente pensando aqui se existe algum argumento contra o uso de suspensão ou rendimento dentro da função que está sendo executada pelo Executor? Se eu entendi corretamente, neste caso, cada um dos meus funcionários tem seu próprio encadeamento e, portanto, não deve haver efeitos colaterai

Se o Executor estiver usando um FixedThreadPool:

(Executors/newFixedThreadPool 1000)

s coisas se tornam mais complicadas porque os threads não serão retornados ao pool até que seu trabalho seja concluído, o que significa que os outros trabalhadores na fila levarão mais tempo para concluir se os threads estiverem inativo

O meu entendimento de encadeamento neste caso está correto?

(Nota: suspeito que meu design esteja realmente errado, mas só quero ter certeza de que estou na página correta)