не могу понять почему при таком коде, у меня выскакивала ошибка "Для каждого файла создай нить ReadThread и запусти ее"
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String fileName = reader.readLine();
ReadThread readThread = new ReadThread(fileName);
readThread.start();
if (fileName.equals("exit"))
break;
}
}
А при таком коде данной ошибки нет
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
while (true) {
ReadThread readThread = new ReadThread(fileName);
readThread.start();
fileName = reader.readLine();
if (fileName.equals("exit"))
break;
}
}
Polina
29 уровень
решена, но остался вопрос по созданию нитей и запуску.
Решен
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Polina
21 декабря 2018, 21:46
Похоже надо было вообще вот так написать...
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String fileName = reader.readLine();
if (fileName.equals("exit")) {
break;
}
ReadThread readThread = new ReadThread(fileName);
readThread.start();
}
0
Дмитрий СоснинExpert
21 декабря 2018, 23:52
ага, так норм должно быть
0
Дмитрий СоснинExpert
21 декабря 2018, 01:00
Как в первом случае поведёт себя код, когда введёшь exit?
0
Polina
21 декабря 2018, 16:35
в смысле того, что он создаст нить и запустит ее, а во втором случае просто выйдет из цикла?
0
--------Master
21 декабря 2018, 16:40
Если второй вариант прошел, то это похоже на косяк валидатора: если первой же строкой ввести exit, то программа не завершится сразу, как ожидается, а все равно попытается создать поток для чтения из несуществующего файла...
0
Дмитрий СоснинExpert
21 декабря 2018, 20:25
Ну если просто exit ввести, то по идее оба варианта должны ошибку поймать. А если ввести
то второй вариант выполнится нормально, а вот первый сначала запустит нить в котором откроет файл c:\file.txt, а следом запустит нить, в которой попытается открыть файл exit.
0
Дмитрий СоснинExpert
21 декабря 2018, 20:29
Ошибка и там и там во времени когда строчка проверяется на стоп слово. Но во втором случае она возникает лишь при определенных условиях, которые валидатор не проверяет, а в первом - всегда.
0