2 rock93 rock93 于 2016.05.10 15:55 提问

java多线程如何实现1加到30

java如何用10个线程实现从1加到100,如果不调用join每个线程都是从21开始加到30.求解决

 public class thread {

    public static void main(String[] args) throws InterruptedException {
        mythread mt = new mythread();

        mt.setbagin(1);
        Thread th1 = new Thread(mt,"第1个线程");
        th1.start();
        th1.join();

        mt.setbagin(11);
        Thread th2 = new Thread(mt,"第2个线程");
        th2.start();
        th2.join();

        mt.setbagin(21);
        Thread th3 = new Thread(mt,"第3个线程");
        th3.start();
        th3.join();

        System.out.println(mt.Getsum());
    }
}
class mythread extends Thread{
    public int sum=0;
    private int bagin;

    public void run(){//synchronized
        System.out.println(Thread.currentThread().getName()+"setbagin="+bagin);
        for(int i=bagin;i<=bagin+9;i++){
            sum+=i;
        System.out.println(Thread.currentThread().getName()+"sum:"+sum);
        }
    }

    public void setbagin(int bagin){
        this.bagin = bagin;
    }

    public int Getsum(){
        return sum;
    }
}

2个回答

yanggq1988
yanggq1988   2016.05.10 16:15

join() 方法主要是让调用改方法的thread完成run方法里面的东西后, 在执行join()方法后面的代码。
如果不加join()方法,程序并发执行,mt.setbagin(21);把在多线程执行前把前面的两次赋值都覆盖了。

rock93
rock93 用join的话就跟跟单线程没什么区别了,如果不用join的话有什么办法实现么
大约 2 年之前 回复
CSDNXIAOD
CSDNXIAOD   2016.05.10 16:04

Java多线程实现--笔记1
黑马程序员_java中的多线程1
java 多线程1
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java的thread类重写run方法的双线程从1加到100
java课上老师要求的小练习,使用的是继承Thread类来实现的。
java多线程之从1数到10 //两个线程进行数数
军训时最常见的莫过于报数了,1、2、3、4、5..... 现在我要用java的多线程实现类似军训报数的功能, 即开启两个线程,让它们轮流数数,从1数到10,如: 线程A:1 线程B:2 线程A:3 线程B:4 线程A:5 线程B:6 ...... 如何实现该功能呢? -------------------------------------------------------
编写一个java程序,从1加到100,结果是5050。 每做一次加法,就休眠1秒 当程序运行过程中,杀死这个程序。 再次运行,还能从上次的计算结果继续下去。
package com.qf.second.day08_jdbc; import java.util.List; import java.util.Map; import java.util.Map.Entry; /* * 编写一个java程序,从1加到100,结果是5050。 每做一次加法,就休眠1秒 当程序运行过程中,杀死这个程序。 再次运行,还能从上次的计算结果继续下去。 * */ p
编写10个线程,第一个线程从1加到10,第二个线程从11加到20…第十个线程从91加到100, 最后再把10个线程结果相加。
编写10个线程,第一个线程从1加到10,第二个线程从11加到20…第十个线程从91加到100, 最后再把10个线程结果相加。
Runable实现多线程并且用两个线程打印0-10
实现Runable接口的方式: 1创建实现Runable接口的实现类:必须实现run 方法 2创建1中对应的Runable接口的实现对象 3创建Thread对象 利用Thread Runable target 4调用Thread类的start 方法启动线程
java 多线程打印1到75个数
ava线程(使用线程池)交替打印1到75个数的两种解法 2012-12-10 09:53 3153人阅读 评论(2) 收藏 举报  分类: Java(9)  版权声明:本文为博主原创文章,未经博主允许不得转载。 解法一: [java] view plain copy 还有另外一个解法:   pa
多线程计算1到100的求和
原文 http://blog.csdn.net/kiss_the_sun/article/details/49757285 问题:多线程计算1+2+…+100,如:起四个线程,分别计算1+2+..25, 26+27+…+50, 51+52+…+75, 76+77+…100, 最后将总和相关,输出应为5050  解决方法: 依次调用thread.join(),主
java 1加到100
public class zizheng {  public static void main(String[] agrs)  {   int i,sum=0;   for(i=0;i    sum=sum+i;   }      System.out.println(sum);  } }
编写10个线程,第一个线程从1加到10...
11、编写10个线程,第一个线程从1加到10,第二个线程从11加到20...第十个线程从91加到100,最后再把十个线程结果相加。 public class Accumulator extends Thread { private int stratNum; public static int sum; public Accumulator(int startNum) { this.s
11 多线程累加问题
前言今天 无聊闲想的时候, 突然想到了一下多线程相关的问题 1. 累增的问题, 也就是对于一个int多个[x]线程对其进行++操作, 每个线程操作N次     1.1 常规场景下面, 多线程进行处理, 得到的结果应该是小于x * N, 因为++并非原子操作     1.2 在常规的场景下面, 使用synchronized[Lock相关api], 进行处理, 虽然能够保证正确性,