Сравнение всех файлов в каталоге друг с другом с помощью потоков в Java

#java #multithreading

Вопрос:

Мне нужно сравнить содержимое каждого файла в каталоге с каждым другим файлом в каталоге, т. Е. Если есть 4 файла, будет 6 сравнений. Для этого мне нужно использовать потоки и знать, что я должен использовать очередь блокировки, но как я могу начать сравнения, если я еще не прочитал все файлы в каталоге? Если я прочитал 5 из 10 файлов в каталоге, я не могу использовать файл 1 из очереди, так как его все еще нужно сравнить с 5 другими файлами, которые еще предстоит прочитать. Итак, как я могу удалить файл из очереди только тогда, когда я знаю, что он был сопоставлен с любым другим файлом?

Комментарии:

1. Я настоятельно рекомендую вам просто вычислить хэш каждого файла и сравнить только хэши (в основном потоке, так как это будет значительно быстрее, чем альтернатива). Если вы подозреваете коллизии хэшей, вы все равно можете проверить совпадения с помощью сравнения байт за байтом после этого.