Итак, я пишу код, который будет анализировать несколько текстовых файлов в папке, собирать информацию о них и помещать эту информацию в две переменные c Список переменных экземпляра. Порядок размещения информации не имеет значения, так как я все равно ее отсортирую. Но по какой-то причине увеличение количества потоков не влияет на скорость. Вот мой метод run и часть моего основного метода, который использует многопоточность.
public void run() {
parseFiles();
}
public static void main(String[] args) {
while (filesLeft != 0) {
Thread t = new Thread(new fileParser());
t.start();
try {
t.join();
}
catch (InterruptedException e) {
System.out.println("error.");
}
}
Если требуется дополнительная информация, я в основном имею переменную экземпляра stati c в виде массива файлов, которые мне нужны go через, а также постоянное число потоков (которое изменяется вручную в целях тестирования). Если бы я имел, скажем, 4 потока и 8 файлов, каждый вызов parseFiles проходит через следующие 2 файла массива, индексы отслеживаются переменной экземпляра stati c. Если бы у меня было, скажем, 4 потока и 9 файлов, первый поток анализирует 3 файла, следующий анализ 2, с оператором что-то вроде filesToParse = Math.ceil(filesLeft / threadsLeft)
, причем последние две переменные в функции потолка являются stati c как хорошо.
Есть ли какая-либо ошибка в моем коде, или я должен просто тестировать большие текстовые файлы с большим количеством слов, чтобы увидеть снижение скорости с добавленными потоками (в настоящее время у меня есть 5 текстовых файлов каждый с 20+ параграфами, и я получить около 60-70 мс).