Как мне изменить эту программу, чтобы создать 50 потоков? Мой код создает только 47 потоков.
Цитата:Вопрос-
Напишите программу под названием ReverseHello.java это создает поток (назовем его потоком 1). Поток 1 создает другой поток (поток 2); поток 2 создает поток 3; и так далее, вплоть до потока 50. Каждый поток должен печатать "Hello from Thread <num>!", Но вы должны структурировать свою программу таким образом, чтобы потоки печатали свои приветствия в обратном порядке.
class reversehello extends Thread{ public void run() { for(int j=49;j>=0;j--) System.out.println("Hello from Thread <"+(j+1)+">"); try{ Thread.sleep(1000); } catch(Exception e) {System.out.println(e);} } public static void main(){ reversehello t[]=new reversehello [50]; for(int i=0;i<50;i++) t[i]=new reversehello(); for(int i=49;i>=0;i--) t[i].start(); } }
Что я уже пробовал:
Я попытался создать массив размером 53 и запустить его от 52 до 0,но результат был тот же.Он создает только 47 потоков.
Philippe Mori
Зачем вам петля в обоих случаях run
функции и в main
функция?
Anurita Srivastava
Цикл в main предназначен для запуска() потоков,а в run-для печати выходных данных, фактически для печати номера потока.
Mohibur Rashid
Откуда вы знаете, что он создает только 47?
Anurita Srivastava
потому что выходные данные печатаются только до Hello из потока 47.
Mohibur Rashid
Ваше приложение запускает все 50 потоков + 1(основной поток). Но ваша логика неверна. Следуйте тому, что сказал Ричард Маккатчан
Patrice T
Программа не соответствует утверждениям, это просто неправильно.
он выводил что-то вроде 2500 приветственных сообщений.
Richard MacCutchan
Вы запустили все потоки из своего основного потока, а это не то, что говорят вам инструкции. Основной поток должен начать поток 1, который должен начать поток 2 и т. д.