В вашем коде вы запускаете потоки с threads[i].start();
, но никогда не ждете, когда они завершат выполнение с вызовом .join()
.Это может привести к тому, что ваш метод вернет значение до того, как все ваши потоки завершат выполнение, в результате чего он вернет неправильное значение.
Чтобы исправить это, добавьте что-то подобное перед возвратом значения:
for(Thread t : threads) {
t.join();
}