我有一個Clojure的程序中創建線程,而數量龐大的內螺紋:睡一個ExecutorService(Java/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))
它已經JVM之間一段時間我和我基本上是想在這裏如果在Executor正在執行的函數內部有任何反對使用睡眠或yield的參數?如果我理解正確,在這種情況下,我的每一個工人都有自己的線程,因此應該沒有副作用。
如果執行程序使用FixedThreadPool:
(Executors/newFixedThreadPool 1000)
事情變得更加複雜,因爲直到他們的工作完成線程不會返回到池中,這意味着其他排隊的工人將需要更長的時間才能完成,如果線程正在睡覺。
我對這個實例中線程的理解是否正確?
(注:我懷疑我的設計其實是錯誤的,而只是想確保我在正確的頁面上)