私はスレッドを含むことを試みている簡単な練習をしています。Javaスレッドが起動しない
(a)RunAnableを実装するSumActionというクラスを作成します。 クラスには、start、end、およびsumの3つのインスタンス変数が含まれています。 startとendはコンストラクタによって初期化されます。 sumは0に設定されます。
(b)run()メソッドは、開始から終了までのすべての値の合計を求めるforループを持つ必要があります。 sumの値を返すにはgetSum()メソッドが必要です。主に
(C)本の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());
スレッドが終了する前に合計を印刷している可能性があります。 – Berger
両方のスレッドのjoinメソッドを使用する –