我有一個簡單的練習,我正在嘗試涉及線程。 (a)創建一個名爲SumAction的類來實現Runnable。 該類包含3個實例變量 - 開始,結束和和。開始和結束由構造函數初始化。總和被設置爲0.java線程開始不工作
(b)run()方法應該有一個for循環,它應該找到從開始到結束的所有值的總和。應該有一個方法getSum()來返回sum的值。
(c)在主創建這個運行的類,其中一個需要1和10作爲參數的2個實例中,其他需要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());
您可能在線程完成之前打印了總和。 – Berger
這兩個線程都使用join方法 –