Return to Snippet

Revision: 8607
at September 30, 2008 12:00 by liqweed


Initial Code
ExecutorService executorService = Executors.newFixedThreadPool(5);
        int tasksCount = 10;
        final CountDownLatch latch = new CountDownLatch(tasksCount);
        for (int i = 0; i < tasksCount; i++ ) {
            executorService.execute(new Runnable() {
                public void run() {
                    try {
                        // Do some work;
                    } finally {
                        latch.countDown();
                    }
                }
            });
        }
        try {
            latch.await();
        } catch (InterruptedException e) {
            // todo >> handle exception
        }
        // All done!
        // Do some more work
    }

Initial URL
http://java.sun.com/j2se/1.6.0/docs/api/java/util/concurrent/CountDownLatch.html

Initial Description
A simple way to parallelize a for loop in Java. Wrapping each iteration (task) with a Runnable, executing them with an ExecutorService (to pool threads) and coordinating them with a simple CountDownLatch.

Due to Java's lack of closures, this simple scenario is rather verbose.

Initial Title
Coordinating Runnable tasks using CountDownLatch

Initial Tags


Initial Language
Java