私のプロジェクトには、Thread を拡張する 3 つのクラスがあり、それぞれが整数の計算を行います。3 つの計算値すべてを取得するには、それらを実行する必要があります。このプロセスは、特定の範囲内のすべての整数に対して実行する必要があります。
これは私のスレッドの1つです:
public class FactorialNumber extends Thread {
private int number;
public void setNumber(int number) {
this.number = number;
}
public void run() {
try {
sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print(NumbersOperations.getFactorial(number));
}
}
これは、スレッドを開始しようとするメソッドです。
public static void getThreevalues() throws InterruptedException {
int startOfRange = getBorder("Enter the left border of range: ");
int endOfRange = getBorder("Enter the right border of range: ");
for(int i = startOfRange; i <= endOfRange; i++) {
PrimeNumber primeNumber = new PrimeNumber();
FibonachiNumber fibonachiNumber = new FibonachiNumber();
FactorialNumber factorialNumber = new FactorialNumber();
primeNumber.setNumber(i);
fibonachiNumber.setNumber(i);
factorialNumber.setNumber(i);
System.out.print("Number: " + i);
System.out.print(" is prime number ");
primeNumber.start();
System.out.print(". Fibonachi - " );
fibonachiNumber.start();
System.out.print(". Factorial - ");
factorialNumber.start();
System.out.println();
}
}
コードを実行すると、次のようになります。
Number: 3 is prime number . Fibonachi - . Factorial -
Number: 4 is prime number . Fibonachi - . Factorial -
Number: 5 is prime number . Fibonachi - . Factorial -
Number: 6 is prime number . Fibonachi - . Factorial -
true2hi6falsetrue5hi2483falsehi720hi120
私が理解しているように、start() は run() メソッドを呼び出しません。私の run メソッドには sleep(500) がありますが、結果はスリープせずにコンソールに表示されます。
私はすでにこのことに多くの時間を費やしており、残念ながら問題を解決できなかったので、助けていただければ幸いです。