import java.io.*;
class FileReaderThread extends Thread {
private String fileName;
private int fileOrder;
private String fileContent = "";
private int wordCount = 0;
public FileReaderThread(String fileName, int fileOrder) {
this.fileName = fileName;
this.fileOrder = fileOrder;
}
@Override
public void run() {
try {
BufferedReader br = new BufferedReader(new FileReader(fileName));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
br.close();
fileContent = sb.toString();
String[] words = fileContent.trim().split("\\s+");
wordCount = words.length;
} catch (IOException e) {
System.out.println("Error reading file " + fileOrder + ": " + e.getMessage());
}
}
public String getFileContent() {
return fileContent;
}
public int getWordCount() {
return wordCount;
}
public int getFileOrder() {
return fileOrder;
}
}
public class FileReaderThreads {
public static void main(String[] args) {
String[] files = {"file1.txt", "file2.txt", "file3.txt"};
FileReaderThread[] threads = new FileReaderThread[3];
for (int i = 0; i < 3; i++) {
threads[i] = new FileReaderThread(files[i], i + 1);
threads[i].start();
}
for (int i = 0; i < 3; i++) {
try {
threads[i].join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
int[] outputOrder = {3, 2, 1};
for (int order : outputOrder) {
for (FileReaderThread thread : threads) {
if (thread.getFileOrder() == order) {
System.out.println(thread.getFileContent());
System.out.println("there are " + thread.getWordCount() + " words in the " + order + ". file.\n");
}
}
}
}
}