Java Language Ajouter deux tableaux `int` à l'aide d'un Threadpool


Exemple

Un Threadpool a une file d'attente de tâches, dont chacune sera exécutée sur l'un de ces threads.

L'exemple suivant montre comment ajouter deux tableaux int aide d'un Threadpool.

Java SE 8
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));

Remarques:

  1. Cet exemple est purement illustratif. En pratique, il n'y aura pas d'accélération en utilisant des threads pour une tâche aussi petite. Un ralentissement est probable, car les frais généraux liés à la création et à la planification des tâches saturent le temps nécessaire à l'exécution d'une tâche.

  2. Si vous utilisiez Java 7 et versions antérieures, vous utiliseriez des classes anonymes au lieu de lambdas pour implémenter les tâches.