两个线程在Scala中访问同一文件

时间:2018-11-22 09:10:45

标签: multithreading scala parallel-processing

我有一个Shell脚本,可以将文件复制到一个位置,而另一个脚本可以将这些文件拾取以进行进一步处理。我想使用多线程在使用线程池的Scala中并行拾取文件。

但是,如果有两个线程和两个文件,则它们都将拾取同一文件。我已经尝试过很多次了,但最终总是这样。 我需要线程并行拾取不同的文件

有人可以帮我吗?我可以使用什么方法?如果您能指出正确的方向,那就足够了。

2 个答案:

答案 0 :(得分:1)

我认为您可以使用并行序列并行进行处理。 您不必自己处理此逻辑。对于前。代码可能是这样的:

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

此代码将并行执行。并且您可以将线程数设置为此处提到的特定数:https://stackoverflow.com/a/37725987/2201566

答案 1 :(得分:0)

您也可以尝试使用演员-例如-供您参考-https://github.com/tsheppard01/akka-parallel-read-csv-file