【发布时间】:2017-10-01 13:23:19
【问题描述】:
我有一个涉及线程的简单练习。
(a) 创建一个名为 SumAction 的类来实现 Runnable。 该类包含 3 个实例变量 - start、end 和 sum。 start 和 end 由构造函数初始化。总和设置为 0。
(b) run() 方法应该有一个 for 循环,它应该找到从开始到结束的所有值的总和。应该有一个方法 getSum() 来返回 sum 的值。
(c) 在 main 中创建这个 Runnable 类的 2 个实例,一个以 1 和 10 作为参数,另一个以 10 和 20 作为参数。
(d) 将这些实例传递给 2 个线程构造函数以创建线程 t1 和 t2。
(e) 线程完成后,调用 getSum 从两个线程中获取总和值以求总和。
我很确定我做对了,但我仍然得到 0 的总和值。
这是我的课
public class SumAction implements Runnable {
private int start, end, sum;
public SumAction(int start, int end) {
this.start = start;
this.end = end;
sum = 0;
}
@Override
public void run()
{
for (int i = start+1; i < end; i++)
{
sum += i;
}
}
public int getSum() {
return sum;
}
}
这里是主要的
SumAction run1 = new SumAction(1, 10);
SumAction run2 = new SumAction(10, 20);
Thread t1= new Thread(run1);
Thread t2= new Thread(run2);
t1.start();
t2.start();
System.out.println("Sum 1 : " + run1.getSum());
System.out.println("Sum 2 : " + run2.getSum());
【问题讨论】:
-
您可能在线程完成之前打印总和。
-
对两个线程使用连接方法
标签: java multithreading runnable