Нити и байты Читайте с консоли имена файлов, пока не будет введено слово «exit«. Передайте имя файла в нить ReadThread. Нить ReadThread должна найти байт, который встречается в файле максимальное число раз, и добавить его в словарь resultMap, где параметр String — это имя файла, параметр Integer — это искомый байт. Закрыть потоки. Требования: 1. Программа должна считывать имена файлов с консоли, пока не будет введено слово "exit". 2. Для каждого файла создай нить ReadThread и запусти ее. 3. После запуска каждая нить ReadThread должна создать свой поток для чтения из файла. 4. Затем, нити должны найти максимально встречающийся байт в своем файле и добавить его в словарь resultMap. 5. Поток для чтения из файла в каждой нити должен быть закрыт.
public static volatile Map<String, Integer> resultMap = new HashMap<String, Integer>();

 public static void main(String[] args) throws IOException {
     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
         String nameFile = reader.readLine();
         while (!("exit".equals(nameFile))){
          ReadThread rd = new  ReadThread(nameFile);
          rd.start();
         }
 }

 public static class ReadThread extends Thread {
     String name;
     FileInputStream file;
     public ReadThread(String fileName) throws FileNotFoundException {
         file = new FileInputStream(fileName);
         this.name = fileName;
     }

     public void run() {
         ArrayList<Integer> list = new ArrayList<>();
         HashMap<Integer, Integer> map = new HashMap<>();
         try {
             while (file.available()>0){
                 list.add(file.read());
             }
             file.close();
             int count= 0;
             for (int ch : list) {
                 if (map.containsKey(ch)) {
                     map.put(ch, map.get(ch) + 1);
                 } else {
                     map.put(ch, 1);
                 }
             }
             int max = 0;
             int  bytes = 0;

             for(Map.Entry<Integer, Integer> paitr: map.entrySet() ){
                 if (paitr.getValue()>max){
                     max =paitr.getValue();
                     bytes = paitr.getKey();
                 }
             }
             resultMap.put(name,bytes);

         } catch (IOException e) {
             e.printStackTrace();
         }

     }

 }