complete example

(ns wm.test
  (import [java.util.concurrent Executors])  
)

(def deliveries (map char (range 65 90)))

(defn- test-fn
  [delivery another param]
  (println "in test sleeping" delivery another param)
  (let[sleep-for (rand-int 10000)]
    (println "sleeping for " sleep-for)
    (Thread/sleep sleep-for)
    )
  (println "finished sleeping" delivery)
  )

(defn- deliver-parallely
  [nthreads deliveries]
  (let[pool  (Executors/newFixedThreadPool nthreads)
       tasks (for [delivery_ deliveries] #(test-fn delivery_ 1 5))
       futures (.invokeAll pool tasks)
       ]
    (println "max " (.getMaximumPoolSize pool))
    (for [ftr futures]
      (.get ftr))
    (.shutdown pool)
    )
  )

(deliver-parallely2 4 deliveries)

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to