题目
- 给定一个很长的数组 (长度 1000w), 通过随机数的方式生成 1-100 之间的整数.
- 实现代码, 能够创建两个线程, 对这个数组的所有元素求和.
- 其中线程1 计算偶数下标元素的和, 线程2 计算奇数下标元素的和.
- 最终再汇总两个和, 进行相加
- 记录程序的执行时间.
代码
public class ThreadAddNum {
private static int count1=0;
private static int count2=0;
private static int n=10000000;
private static int[]nums=new int[n];
public static void main(String[] args) throws InterruptedException {
long startTime=System.currentTimeMillis();
Random random=new Random();
for(int i=0;i<n;i++){
nums[i]=random.nextInt(100)+1;
//System.out.print(nums[i]+" ");
}
Thread t1=new Thread(()->{
for(int i=0;i<n;i+=2){
count1+=nums[i];
}
});
Thread t2=new Thread(()->{
for(int i=1;i<n;i+=2){
count2+=nums[i];
}
});
//开启t1和t2线程
t1.start();
t2.start();
//主线程等待t1和t2线程执行完毕
t1.join();
t2.join();
int count=0;
count=count1+count2;
System.out.println(count);
long endTime=System.currentTimeMillis();
long time=endTime-startTime;
System.out.println("运行时间为:"+time+"毫秒");
}
}