三种创建线程的方法
利用多线程去计算加法,主要有三步
- 分解任务为子任务
- 新建线程执行子任务(如何得到结果或保存结果)
- 得到子任务的结果,合并得到最终结果
创建线程主要有三种方法,前两种没有返回值,callable接口有返回值。
继承Thread类(没有返回值)
//继承thread类,需要重写run方法
public class SumThread extends Thread {
private long start;
private long end;
private int num;
private long[] result;
//这个是为了判断所有线程是否全部执行完,因为继承thread类的线程没有返回值
private CountDownLatch cdl;
public SumThread(long start, long end, int num, long[] result, CountDownLatch cdl) {
this.start = start;
this.end = end;
this.num = num;
this.result = result;
this.cdl = cdl;
}
//需要重写run方法
@Override
public void run() {
long sum = 0;
for (long i=start;i<end;i++){
sum += i;
}
result[num] = sum;
//计数器减一
cdl.countDown();
}
}
public class SumParallelThread {
public static void main(String[] args) throws InterruptedException{
int N = 90000000;
int numThread = 3;
parallel(N, numThread);
}
public static void parallel(int N, int numThread) throws InterruptedException{
//通过一个数组来记录各个子线程的计算结果
long[] result = new long[numThread];
//CountDownLatch可以看作计数器
CountDownLatch cdl =