您的位置:首页 > 编程语言 > Java开发

线程池利用FutureTask执行Callable子类,获取执行结果的例子

2017-04-20 10:46 330 查看
很多情况下,子类继承了Runnable和Thread,只能保证这个线程执行,而不能获取线程执行的结果,为了获取线程的执行结果,我们可以让子类继承于Callable,这样就可以获取执行的结果

package test;

import java.util.ArrayList;

import java.util.List;

import java.util.concurrent.Callable;

import java.util.concurrent.ExecutionException;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.FutureTask;

class Item implements Callable<Integer> {

private int first;

private int second;

public Item(int first, int second) {

this.first = first;

this.second = second;

}

@Override

public Integer call() throws Exception {

return this.first * this.second;

}

}

public class CallBackThread {

public static void main(String[] args) throws InterruptedException, ExecutionException {

//創建了大小為8的線程池

ExecutorService fixedThreadPool = Executors.newFixedThreadPool(8);

List<FutureTask<Integer>> futureTasks = new ArrayList<FutureTask<Integer>>();

for (int i = 0; i < 100; i++) {

FutureTask<Integer> futureTask = new FutureTask<Integer>(new Item(i, (i + 1) * (i - 1)));

futureTasks.add(futureTask);

fixedThreadPool.submit(futureTask);

}

for (FutureTask<Integer> task : futureTasks) {

System.out.println(task.get());

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  线程池 Callable java