A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

描述:创建10个线程,第一个线程从1加到10,第二个线程从11加到20·······第十个线程冲91加到100,最后再把10个线程结果想加。

前面是个步奏的思路好说,吧是个线程写出来,分别运行递归。关键是最后一步,如何把所有线程的结果相加!!??

烦请大神给点思路!谢谢

2 个回复

正序浏览
//编写10个线程,第一个线程从1加到10...最后把10线程结果相加
//继承Thread类
public class Accumulator extends Thread{
        private int startNum;
        public static int sum;
        //带参构造
        public Accumulator(int startNum){
                this.startNum=startNum;
        }
        //同步
        public static synchronized void add(int num){
                sum+=num;
        }
        //调用run()方法
        public void run(){
                int sum=0;
                for(int x=0;x<10;x++){
                        sum+=startNum+x;
                }
                add(sum);
        }
        //主函数抛出异常
        public static void main(String[] args) throws Exception{
                //创建10个线程
                Thread[] threadList=new Thread[10];
                for(int x=0;x<10;x++){
                        threadList[x]=new Accumulator(10*x+1);
                        //启动线程
                        threadList[x].start();
                }
                for(int x=0;x<10;x++){
                        threadList[x].join();
                }
                System.out.println("sum:"+sum);
        }
}
回复 使用道具 举报
在每个类中写一个得到run()运行结果的方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马