使用ExecutorService的方法Future<T> submit(Callable<T> Task)
返回未来任务对象 使用Get()方法获取结果
import java.util.concurrent.Callable;
public class MyCallable implements Callable<String> {
private int n;
public MyCallable(int n){
this.n=n;
}
@Override
public String call() throws Exception {
int sum=0;
for (int i = 1; i <= n; i++) {
sum+=i;
}
return Thread.currentThread().getName()+"计算1-"+n+"的和为"+sum;
}
}
import java.util.concurrent.*;
public class Test {
public static void main(String[] args) throws Exception {
ExecutorService pool=new ThreadPoolExecutor(3,5,6, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(5),
Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());
Future<String> s1= pool.submit(new MyCallable(100));
Future<String> s2= pool.submit(new MyCallable(200));
Future<String> s3= pool.submit(new MyCallable(300));
Future<String> s4= pool.submit(new MyCallable(400));
Future<String> s5= pool.submit(new MyCallable(500));
System.out.println(s1.get());
System.out.println(s2.get());
System.out.println(s3.get());
System.out.println(s4.get());
System.out.println(s5.get());
}
}
以上就是线程池处理Callable任务的示例