Add two int arrays using a Threadpool
suggest changeA Threadpool has a Queue of tasks, of which each will be executed on one these Threads.
The following example shows how to add two int
arrays using a Threadpool.
int[] firstArray = { 2, 4, 6, 8 }; int[] secondArray = { 1, 3, 5, 7 }; int[] result = { 0, 0, 0, 0 }; ExecutorService pool = Executors.newCachedThreadPool(); // Setup the ThreadPool: // for each element in the array, submit a worker to the pool that adds elements for (int i = 0; i < result.length; i++) { final int worker = i; pool.submit(() -> result[worker] = firstArray[worker] + secondArray[worker] ); } // Wait for all Workers to finish: try { // execute all submitted tasks pool.shutdown(); // waits until all workers finish, or the timeout ends pool.awaitTermination(12, TimeUnit.SECONDS); } catch (InterruptedException e) { pool.shutdownNow(); //kill thread } System.out.println(Arrays.toString(result));
Notes:
- This example is purely illustrative. In practice, there won’t be any speedup by using threads for a task this small. A slowdown is likely, since the overheads of task creation and scheduling will swamp the time taken to run a task.
- If you were using Java 7 and earlier, you would use anonymous classes instead of lambdas to implement the tasks.
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents