Следующая программа не должна выполняться последовательно, но она по-прежнему делает это.Почему моя многопоточная программа выполняется последовательно?
class A extends Thread
{
public void run()
{
for(int i=0; i<=5; i++)
{
System.out.println("Thread A : "+i);
}
System.out.println("exit from A");
}
}
class B extends Thread
{
public void run()
{
for(int j=0; j<=5; j++)
{
System.out.println("Thread B: "+j);
}
System.out.println("exit from B");
}
}
class C extends Thread
{
public void run()
{
for(int k=0; k<=5; k++)
{
System.out.println("Thread C : "+k);
}
System.out.println("exit from C");
}
}
class ThreadCounter
{
public static void main(String arg[])
{
new A().start();
new B().start();
new C().start();
}
}
Выход я получаю:
Thread A start
Thread A : 1
Thread A : 2
Thread A : 3
Thread A : 4
Thread A end
Thread B start
Thread B : 1
Thread B : 2
Thread B : 3
Thread B : 4
Thread B end
Thread C start
Thread C : 1
Thread C : 2
Thread C : 3
Thread C : 4
Thread C end
Можете ли вы сказать мне, почему исполнение таким образом? Не выполнение должно быть последовательным только при запуске
Попробуйте добавить 'Thread.yield()' или 'Thread.sleep' в каждую итерацию каждого цикла. – MadProgrammer
Наверное, потому что петли маленькие. Попадание сна в одну сделает трюк. – Shamik
Да, теперь я вижу многопоточный характер программы, увеличивая цикл до 1000, даже не используя sleep(), wait() и т. Д. – Snehal