Только по-очереди!

  • 9
  • Недоступна
1. В классе Solution создать public static класс нити Read3Strings унаследовавшись от Thread. 2. В методе run реализовать чтение с консоли трех строк. 3. Три подряд введенных строки должны считываться в одной нити и объединяться в одну строку через пробел. 4. В методе main вывести результат для кажд
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (93)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Igor Bykov16 уровень, Москва
5 часов назад
Валидатор принял только с 3й попытки, из-за того что отваливался по таймауту. Хотя в идее всё отрабатывало нормально и программа корректно завершалась. Оказалось, виной тому было наличие проверки reader.ready() 😒
Максим Коровин20 уровень, Краснодар
воскресенье, 14:20
Входные данные: a b c d e f Выходные данные: a b c d e f Но на самом деле выходные данные a b c d e f - в ОДНУ строку
PAVEL KRASNOV17 уровень, Архангельск
суббота, 08:02
После 2-х недель пропуска, задачка на расслабон ))
xodavit22 уровень, Москва
16 февраля, 20:51
еще тупой вопрос почему так работает
t1.start();
        //t1.join();
        t2.start();
        t2.join();
вывод
1
2
3
4
5
6
1 2 3
4 5 6

Process finished with exit code 0
а так нет..
t1.start();
        t1.join();
        t2.start();
        //t2.join();
вывод. после вывода нулей, он еще 3 раз считывает и только потом выходит
1
2
3
1 2 3
null null null
4
5
6

Process finished with exit code 0
xodavit22 уровень, Москва
16 февраля, 21:07
я конечно догадываюсь, что джоин нужен между стартом и принтрезалт...чтоб правильно собрались все данные... но это не точно
xodavit22 уровень, Москва
16 февраля, 21:08
в общем тема джоина не раскрыта :(
Никита Сычев18 уровень, Санкт-Петербург
четверг, 08:07
Оперативно ты до 22 уровня с воскресенья). Все верно "чтоб правильно собрались все данные...". То есть , в данном случае инициализация объектов (extends от нити) распределена join(временем выполнения Run()). И при распечатке второй нити мы просто еще не успели ввести данные. volaotile в данном случае не при чем.
xodavit22 уровень, Москва
16 февраля, 20:46
а как правильнее? вызвать все потоки и потом джоины
t1.start();
        t2.start();
        t1.join();
        t2.join();
или вызвать каждый поток и сразу джоин у нему?
t1.start();
        t1.join();
        t2.start();
        t2.join();
Vladimir17 уровень
позавчера, 14:56
Если сначала 2 старта, затем два джойна, то без синхронизации ридера в методе ран не обойтись. Второй случай проще, синхронизация не нужна, так как второй поток t2 не запустится, пока не выполнится первый.
alex19 уровень
9 февраля, 10:52
я так понимаю, что в этой задаче использовать volatile не нужно? потоки же разделены по времени
Владимир17 уровень
28 января, 18:45
впервые обиделся на валидатор 😊 s4 =String.join(" ", s1, s2, s3); такой вариант не пропустил. А такой пропустил s4 =s1+ " " + s2 + " " + s3; хотя вывод на экран одинаковый в обоих случаях.
Badadach20 уровень, Москва
24 января, 07:16
Ребят, спросонья забыл совсем в main прописать start(); для потоков. И выводилось следующее: null null null null null null Не могу понять как это происходит, причем считывать ничего не давало из буфридера, сразу хлоп вывело и завершилось.
Vladimir17 уровень
позавчера, 15:20
Потому что метод ран не вызывался, а вызывался сразу printResult, в котором переменные не определены.
Александр Журавлёв18 уровень, Самара
22 января, 17:55
У меня результат всё верно, но валидатор пишет, что слишком долго 😠
Artem Diachenko19 уровень, Днепр
21 января, 09:49
вообще втупую String s1, s2, s3; потом их считать выводил System.out.println(s1 + " " + s2 + " " + s3);
Avetis Grigoryan18 уровень, Уфа
22 января, 10:32
то же самое ахахаха