线程类,执行的任务:
package com.yonyou.sci.gateway.exec;
import java.util.concurrent.Callable;
public class CallableTask<I extends Number> implements Callable<Integer> {
private Integer num;
public CallableTask () {}
// 使用构造方式接收参数
public CallableTask(Integer num){
this.num = num;
}
@Override
public Integer call () {
Integer count = 0;
for (int i = 1; i <= num;i++) {
// 根据传入的参数,迭代相加
count = count + i;
}
return count;
}
}
使用线程池方式执行上面的任务:
package com.yonyou.sci.gateway.exec;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/**
* 使用线程池实现并行计算
*/
public class TaskMain {
public static void main (String[] args) throws Exception{
// 创建一个固定长度线程池
ExecutorService es = Executors.newFixedThreadPool(2);
// 使用线程池方式、执行线程子类
Future<Integer> r1 = es.submit(new CallableTask<Integer>(100));
Future<Integer> r2 = es.submit(new CallableTask<Integer>(200));
// 获取到计算的结果并打印出来
System.out.println(r1.get());
System.out.println(r2.get());
// 关闭线程池
es.shutdown();
}
}