我已经实现了以下代码类: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
}
您将能够看到总和结果。
创建线程时,应用程序继续线性执行,然后在随机算法决定时执行线程。
添加回答
举报
0/150
提交
取消