Почему scala порождает несколько потоков, даже если не использует Akka или параллельные коллекции?

#java #multithreading #scala #concurrency

#java #многопоточность #скала #параллелизм

Вопрос:

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

Проблема в том, что я понятия не имею, почему он порождает несколько потоков. Я не использую параллельные коллекции, Akka или явно вызываю что-либо, связанное с многопоточностью. Я использую некоторые изменяемые структуры данных, поэтому у меня есть проблемы с состоянием гонки данных, и я хочу понять, как scala (или может быть базовой java / jvm) генерирует потоки.

Комментарии:

1. Могут быть внутренние потоки JVM. Возьмите дамп потока ( kill -3 java_pid в Linux или используйте JDK jstack util) и убедитесь сами.

2. @VictorSorokin спасибо. Раньше я jcmd Thread.print получал дамп потока. Я узнал, что в основном это были потоки JVM, связанные с мониторингом, сборкой мусора и т. Д., И Только один основной поток. Спасибо.