练习:利用线程实现异步计算
线程1,计算1+…+100
线程2,计算1+…+200
简单分析:
(1)两个计算,需要两个线程,利用线程工厂创建出存储两个线程的线程池
(2)实现Callable接口,因为计算的结果有返回值
(3)可以通过构造器传参
首先写实现类
package cn.itcast.demo06;
import java.util.concurrent.Callable;
public class LianXiCallable implements Callable<Integer>{
//利用构造器传参数
private int a;
public LianXiCallable(int a){
this.a=a;
}
public Integer call(){
int sum = 0;
for (int i = 0; i <= a; i++) {
sum += i;
}
return sum;
}
}
实现程序
package cn.itcast.demo06;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/*
* 使用多线程技术实现异步计算
* 线程1,计算1+..+100
* 线程2,计算1+..+200
*/
public class LianXi {
public static void main(String[] args) throws InterruptedException, ExecutionException {
//使用线程池技术
ExecutorService es = Executors.newFixedThreadPool(2);
//使用submit方法,提交两个线程任务
Future<Integer> f1 = es.submit(new LianXiCallable(100));
Future<Integer> f2 = es.submit(new LianXiCallable(200));
System.out.println(f1.get());
System.out.println(f2.get());
es.shutdown();
}
}