start() doesn't call run() method
In my projects there're 3 classes that extends Thread, each of them does
some calculation for integer number. I need to run them to get all three
calculated values. This process needs to be done for all integers in a
certain range.
This's one of my threads:
public class FactorialNumber extends Thread {
private int number;
public void setNumber(int number) {
this.number = number;
}
public void run() {
System.out.print(NumbersOperations.getFactorial(number));
try {
sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
That's a method that tries to start threads:
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();
}
}
After running my code I get this: 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
As I understand, start() does not call run() method. In my run method
there's sleep(500), but the result just appears in console without any
sleep.
I would appreciate any help, as I've spent too much time on this stuff
already and unfortunately didn't solve the problem.
No comments:
Post a Comment