Два потока, обращающиеся к одному и тому же файлу в Scala - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть сценарий оболочки, который копирует файлы в папку, и другой, который забирает их для дальнейшей обработки.Я хочу использовать многопоточность для параллельного получения файлов в Scala с использованием пула потоков.

Однако, если есть два потока и два файла, они оба получают один и тот же файл.Я пробовал программу много раз, и она всегда заканчивается так. Мне нужны потоки, чтобы параллельно подбирать разные файлы .

Может кто-нибудь мне помочь?Какие подходы я могу использовать?Если бы вы могли указать мне правильное направление, этого было бы достаточно.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Вы также можете попробовать использовать актеров - например, для справки - https://github.com/tsheppard01/akka-parallel-read-csv-file

0 голосов
/ 22 ноября 2018

Я думаю, вы можете использовать параллельную последовательность для параллельной обработки.Вы не должны обращаться с этой логикой самостоятельно.напримеркод может быть таким:

newFiles:Seq[String] = listCurrentFilesNames()
newFiles.par.foreach { fileName =>
   processFile(fileName)
}

Этот код будет выполняться параллельно.и вы можете установить количество потоков на конкретное число, как указано здесь: https://stackoverflow.com/a/37725987/2201566

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...