import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ExecutorExample { private static ExecutorService executor = Executors.newFixedThreadPool(8); //sets maximum number of concurrent threads public static void main (String args[]) { for (int i = 0; i < 10; i++){ BasicThread bThread1 = new BasicThread("First thread " + i); BasicThread bThread2 = new BasicThread("Second thread " + i); executor.execute(bThread1); executor.execute(bThread2); } executor.shutdown(); boolean terminated = executor.isTerminated(); while (!terminated){ try { Thread.sleep(10); //To allow any threads that haven“t ended yet to finish } catch (InterruptedException ex){ System.err.println("Caught Interrupted Exception: " + ex.getMessage()); } terminated = executor.isTerminated(); } } }