public class Communication {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//线程池创建(不变)
ExecutorService pool = new ThreadPoolExecutor(3,5,2,
TimeUnit.MINUTES, new ArrayBlockingQueue<>(5),new ThreadPoolExecutor.AbortPolicy());
//调用线程池的submit方法处理myCallable对象,并用Future Task的父类Future继承
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));
//调用get方法返回内容
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());
}
}
/**
* 功能:用线程池实现Callable线程对象
*/
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 = 0; i < n; i++) {
sum += i;
}
return Thread.currentThread().getName() + "计算的1-" + n + "结果为" + sum;
}
}
线程池处理Callable任务的方法
最新推荐文章于 2023-08-03 11:30:38 发布