В моем программировании три потока. В соответствии с концепцией потоков все потоки работают асинхронно. Таким образом, каждый поток выполняется процессором случайным образом. Если я только что приостановил выполнение одного потока с помощью thread.sleep (), тогда другой поток должен работать. Правильно??
И когда время ожидания потока истекло, он должен снова продолжить выполнение.
Но в моем случае, когда я приостанавливаю один поток с помощью t2.sleep (10000), все остальные потоки также останавливаются. Но они должны были работать нормально, пока поток t2 находится в ожидании. Может кто-нибудь сказать мне, почему это так?
import java.util.*;
class square extends Thread
{
public int x;
public square(int x)
{
this.x = x;
}
public void run()
{
System.out.println("Square of the number is " + x*x);
}
}
class cube extends Thread
{
public int x;
public cube(int x)
{
this.x = x;
}
public void run()
{
System.out.println("Cube of the number is " + x*x*x);
}
}
class randgen extends Thread
{
public void run()
{
int num=0;
Random r = new Random();
try
{
for(int i=0;i<5;i++)
{
num = r.nextInt(100);
System.out.println("The number generated is " + num);
square t2 = new square(num);
t2.start();
t2.sleep(10000);
cube t3 = new cube(num);
t3.start();
}
}
catch(InterruptedException e)
{
System.out.println(e.getMessage());
}
}
}
public class Main
{
public static void main(String args[])
{
randgen obj = new randgen();
obj.start();
}
}
OUTPUT
Сгенерированный номер 50
Площадь номера 2500
(После 10 с)
Куб числа 125000
Сгенерированный номер 36
Квадрат числа 1296
(После 10 с)
Сгенерированный номер 75
Куб с номером 46656
Квадрат числа 5625
(После 10 с)
Сгенерированный номер 92
Куб числа 421875
Квадрат числа 8464
(После 10 с)
Сгенерированный номер 0
Куб с номером 778688
Квадрат числа 0
(После 10 с)
Куб числа 0
Почему я получаю вывод через 10 секунд, вместо этого по концепции потока тот поток, который я приостанавливаю, должен останавливаться только на 10 секунд, а другой поток должен работать синхронно.