学习多线程后,试着写一段代码掌握下多线程的使用
线程有两种使用方式,一种实现Runnable接口,一种是继承Thread类。
下面代码实现一个求1+2+3+.....+100的和
首先看看线程的实现
public class SumWorker implements Runnable{
private long begin;
private long end;
private long sum = 0;
public SumWorker(long m,long n){
this.begin = m;
this.end = n;
}
@Override
public void run(){ //线程用来实现求和功能
for(long i=begin;i<=end;i++){
sum+=i;
}
}
public long getSum(){
return sum;
}
}
然后测试线程,计算1+2+3.....+10000000000
import java.util.*;自己运行试一下可以得出结果。
public class SumWorkerTest{
public static void main(String[] args)throws InterruptedException{
long sum=0;
long beginTime = System.currentTimeMillis();
List<Thread> list = new ArrayList<Thread>();
List<SumWorker> list2 = new ArrayList<SumWorker>();
for(long i=1;i<=100000000;i+=10000000){
SumWorker sw = new SumWorker(i,i+9999999);
Thread th = new Thread(sw);
th.start();
list.add(th);
list2.add(sw);
}
for(Thread t:list){
t.join();
}
for(SumWorker s:list2){
sum+=s.getSum();
}
System.out.println("1加到1亿的结果是:"+sum);
long endTime = System.currentTimeMillis();
System.out.println("运行时间为:"+(endTime-beginTime));
}
}