There is often not very efficient to try to read files from the hard drive in parallel.
What you can do instead is to read the the files from disk sequential in a loop into memory and then start a thread that analysis the data and writes the result back to a file. When the thread method is done executing, it exits.
You can try to use a
CriticalSection[
^] in order to avoid simultanious disk operation and see if you gain or lose in execution time or if you get access errors without the CriticalSection. (Which you shouldn't if you write to disk using different file names.
If this is a good approach or not depends on the size of the files and how much time the analysis takes.
One risk with this approach is that you might end up with a lot of threads if the analysis time is long compared to the time to read the file.