#java #multithreading #scala #concurrency
#java #многопоточность #скала #параллелизм
Вопрос:
Я написал простую программу, которая суммирует числа, которые она считывает из указанного мной файла. Когда я смотрю, как он запускается в htop, с программой связано ~ 6 потоков. Он также работает на всех моих ядрах.
Проблема в том, что я понятия не имею, почему он порождает несколько потоков. Я не использую параллельные коллекции, Akka или явно вызываю что-либо, связанное с многопоточностью. Я использую некоторые изменяемые структуры данных, поэтому у меня есть проблемы с состоянием гонки данных, и я хочу понять, как scala (или может быть базовой java / jvm) генерирует потоки.
Комментарии:
1. Могут быть внутренние потоки JVM. Возьмите дамп потока (
kill -3 java_pid
в Linux или используйте JDKjstack
util) и убедитесь сами.2. @VictorSorokin спасибо. Раньше я
jcmd Thread.print
получал дамп потока. Я узнал, что в основном это были потоки JVM, связанные с мониторингом, сборкой мусора и т. Д., И Только один основной поток. Спасибо.