[练习]在一个数组中存300条记录,用3个线程统计求和。

来源:互联网 发布:灯光秀编程软件 编辑:程序博客网 时间:2024/05/17 05:14
class Test{
/*定义数组:
*1.成员整型数组array,容量300
*2.将array初始化方法封装在构造函数中
*3.对100个数求和的方法封装成arrayAdd,参数为数组array和N(创建进程时用)*/
class Array{
    int[]array=new int[300];
    Array(){
        this.creatArray();
    }
    private void creatArray(){
        for(int i=0;i<300;i++){
            array[i]=i;
        }
    }
    public int arrayAdd(int[] array,int N){
        int sum=0;
        this.array=array;
        for(int i=N;i<N+100;i++){
            sum+=array[i];
        }
        return sum;
    }
}
/*进程类型
*引入数组指针a
*引入计数段点N
*在重写的方法run()中,调用Array中的累加方法
*注意:this必须写(刚开始我就没写,结果出现空指针错误)
*/
class Cal implements Runnable{
    Array a;
    int N;
    Cal(Array a,int N){
        this.a=a;
        this.N=N;
    }
    public void run(){
        System.out.println(a.arrayAdd(a.array, N));
        
    }
    
}
/*主方法/线程main
*实例化数组类、线程类
*令N分别为0,100,300
*/
    public static void main(String[] args) {        Array a=new Array();        Cal c1=new Cal(a,0);        Cal c2=new Cal(a,100);        Cal c3=new Cal(a,200);
        new Thread(c1).start();
        new Thread(c2).start();
        new Thread(c3).start();
    }
}
第一次输出:
14950
4950
24950
第二次输出:49501495024950
结果分析:三个线程不是顺序运行的,由CPU随机分配执行。




1 0
原创粉丝点击