Если честно, то нет уже сил разбираться в этом говнокоде. Пытался решить с подсказками из обсуждения, но в итоге так ничего и не вышло. Если кто понимает что тут происходит, натолкните на мысль.
package com.javarush.task.task18.task1823;
import java.io.*;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import static com.javarush.task.task18.task1813.AmigoOutputStream.fileName;
/*
Нити и байты
*/
// d:\a.txt
public class Solution {
public static Map<String, Integer> resultMap = new HashMap<String, Integer>();
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
boolean flag = true;
while (flag) {
String fileName = reader.readLine();
if (fileName.equals("exit")) {
flag = false;
break;
}
new ReadThread(fileName).start();
}
reader.close();
System.out.println(resultMap);
}
public static class ReadThread extends Thread {
Map<Integer, Integer> mapa;
String name;
public ReadThread(String fileName) throws IOException {
super(fileName);
this.name = fileName;
}
@Override
public void run() {
try {
FileInputStream fileInputStream = new FileInputStream(fileName);
while (fileInputStream.available() > 0) {
int a = fileInputStream.read();
mapa.put(a, mapa.containsKey(a) ? mapa.get(a) + 1 : 1);
}
// implement file reading here - реализуйте чтение из файла тут
fileInputStream.close();
int max = Collections.max(mapa.values());
int bit = 0;
for (Map.Entry<Integer, Integer> pair : mapa.entrySet()) {
if (max == pair.getValue()) {
bit = pair.getKey();
}
}
synchronized (resultMap) {
resultMap.put(currentThread().getName(), bit);
}}
catch(IOException e){
e.printStackTrace();
}
}
}
}