Задача решена, но остался вопрос.
Я изначально написала код с проверкой того, что reader свободен
try {
if (reader.ready()) {
result.append(reader.readLine());
result.append(" ");
}
Логика моего размыления была в том, что у нас 2 потока, и каждый из них должен знать, не занят ли сейчас reader другим потоком. Хотя в моем случае метод join и так не дает второму потоку взаимодействовать с reader до момента пока первый не закончит работу. Но тем не менее, почему в данном случае при запуске вывод на экран не происходит и даже не дается ввести строки, сразу задача закрывается с 0. В ком случае тогда нужна проверка reader.ready()?
Заранее спасибо:)
Полный код ниже:
public class Solution {
public static volatile BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws InterruptedException {
Read3Strings t1 = new Read3Strings();
Read3Strings t2 = new Read3Strings();
t1.start();
t2.start();
t1.join();
t2.join();
t1.printResult();
t2.printResult();
}
public static class Read3Strings extends Thread {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringBuilder result = new StringBuilder();
public void run() {
for (int i = 0; i < 3; i++) {
try {
//if (reader.ready()) {
result.append(reader.readLine());
result.append(" ");
// }
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void printResult() {
System.out.println(result);
}
}
//add your code here - добавьте код тут
}
Polina
29 уровень
вопрос по проверке доступности reader
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
--------Master
9 ноября 2018, 08:27решение
reader.ready возвращает true, если в потоке уже имеются данные, причем как именно это работает при вводе с клавиатуры, я так до конца и не понимаю. В данном случае 3 раза опрашивается - введенных данных еще нет (разве что можно попытаться за доли секунды вставить в консоль заранее скопированный в буфер набор из 6 строк), цикл завершается, выводить нечего.
+2
Polina
9 ноября 2018, 08:49
! спасибо за разъяснения.
+1