Просматривал аналогичный вопрос по этой задаче, и перенес Thread.currentThread().interrupt(); после завершения while
package com.javarush.task.task16.task1629;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
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();
t1.start();
t1.join();
Read3Strings t2 = new Read3Strings();
t2.start();
t2.join();
//add your code here - добавьте код тут
t1.printResult();
t2.printResult();
}
//add your code here - добавьте код тут
public static class Read3Strings extends Thread {
ArrayList<String> arrayList = new ArrayList<>();
@Override
public void run() {
while (!isInterrupted()) {
for (int i = 0; i < 3; i++) {
try {
if (reader.ready()) {
arrayList.add(reader.readLine()) ;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Thread.currentThread().interrupt();
}
public void printResult() {
for (int i = 0; i < arrayList.size(); i++) {
System.out.println(arrayList.get(i) + " ");
}
System.out.println();
}
}
}