使用 Threadpool 添加两个 int 数组
Threadpool 有一个任务队列,每个任务都将在这些线程上执行。
以下示例显示如何使用 Threadpool 添加两个 int
数组。
Version >= 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));
笔记:
-
这个例子纯粹是说明性的。实际上,通过使用线程来完成这么小的任务,将不会有任何加速。由于任务创建和调度的开销会浪费运行任务所花费的时间,因此可能会减速。
-
如果你使用的是 Java 7 及更早版本,则可以使用匿名类而不是 lambdas 来实现任务。