为了账号安全,请及时绑定邮箱和手机立即绑定

Java线程不改变静态值

Java线程不改变静态值

神不在的星期二 2021-04-09 14:15:46
我已经实现了以下代码类:public class sumThread implements Runnable {    private int index;    private static int sum = 0;    public sumThread(int index) {        this.index = index;    }    public static int getSum() {        return sum;    }    @Override    public void run() {        for (int i = 0; i < index + 100; i++) {            sum += i;        }    }}第2类:import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class SigRuntime {    public static void main(String args[]) {        ExecutorService es = Executors.newCachedThreadPool();        int index = 0;        // for (int i = 0; i < 10; i++) {        sumThread t = new sumThread(index);        index += 100;        es.execute(t);        // }        System.out.println(sumThread.getSum());    }}我正在尝试使用10个线程从0到100求和,因为每个线程取100个值每当我使用sumThread.getSum()时,我都会一直得到0作为返回值!它出什么问题了?
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

sumThread.getSum();在线程初始化之前执行该方法


如果您添加


@Override

    public void run() {

        for (int i = 0; i < index + 100; i++) {

            sum += i;

        }

        System.out.println(sumThread.getSum()); //check the sum

    }

您将能够看到总和结果。


创建线程时,应用程序继续线性执行,然后在随机算法决定时执行线程。


查看完整回答
反对 回复 2021-04-21
  • 1 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信