При вызове start() не вызывается метод run(). Создается ли при этом новая нить - я так и не понял.
Или нить создается, но не работает почему-то вызов метода join().
В файлах, что я ввожу в консоль, есть данные, но программа не выполняет метод run(). Соответственно, данные из файлов не читает. А в конце выводит 2 пустые строки.
Почему?
package com.javarush.task.task16.task1630;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Scanner;
/*
Последовательный вывод файлов
*/
public class Solution {
public static String firstFileName;
public static String secondFileName;
//напишите тут ваш код
static{
Scanner scanner = new Scanner(System.in);
firstFileName = scanner.nextLine();
secondFileName = scanner.nextLine();
}
public static void main(String[] args) throws InterruptedException {
systemOutPrintln(firstFileName);
systemOutPrintln(secondFileName);
}
public static void systemOutPrintln(String fileName) throws InterruptedException {
ReadFileInterface f = new ReadFileThread();
f.setFileName(fileName);
f.start();
f.join();
System.out.println(f.getFileContent());
}
public interface ReadFileInterface {
void setFileName(String fullFileName);
String getFileContent();
void join() throws InterruptedException;
void start();
}
//напишите тут ваш код
public static class ReadFileThread extends Thread implements ReadFileInterface {
String fullFileName;
String content = "";
public void setFileName(String fullFileName){
this.fullFileName = fullFileName;
}
public String getFileContent(){
return content;
}
public void run (){
try (BufferedReader bufferedReader = Files.newBufferedReader(Paths.get(getName()))) {
StringBuilder stringBuilder = new StringBuilder();
while (bufferedReader.ready()) {
stringBuilder.append(bufferedReader.readLine()).append(" ");
}
content = stringBuilder.toString();
} catch (IOException e) {}
}
}
}