/*
1.定义一个任务类 实现callable接口 应该申明线程任务执行完毕后的结果的数据类型
*/
public class MyCallable implements Callable<String>{
private int n;
public MyCallable(int n) {
this.n = n;
}
@Override
//2.重写call方法
public String call() throws Exception {
int sum = 0;
for (int i = 0; i <= n; i++) {
sum += i;
}
return Thread.currentThread().getName()+"执行1-"+n+"的结果是:"+sum;
}
}
public class ThreadPoolDemo2 {
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService pool =new ThreadPoolExecutor(3,5,6, TimeUnit.SECONDS,new ArrayBlockingQueue<>(5), Executors.defaultThreadFactory(),
new ThreadPoolExecutor.AbortPolicy());
Future<String> f1=pool.submit(new MyCallable(100));
Future<String> f2=pool.submit(new MyCallable(200));
Future<String> f3=pool.submit(new MyCallable(300));
Future<String> f4=pool.submit(new MyCallable(400));
Future<String> f5=pool.submit(new MyCallable(500));
System.out.println(f1.get());
System.out.println(f2.get());
System.out.println(f3.get());
System.out.println(f4.get());
System.out.println(f5.get());
}
}
使用了ExecutorService的方法
Future<T>submit(Callable<T>command)