Задать вопрос
@Shiftuia
Java-программист

Как java поток выбирает ядро процессора?

Всем доброго времени суток.

Допустим мы создаем пул потов и запускаем его считать сложное задание.
ExecutorService service = Executors.newFixedThreadPool(12);

		for (int i = 0; i < 500; i++) {
			service.submit(() -> new DustCounter().countAllDustInRoom());
		}


Вопрос - каждый поток привязывается к какому-то конкретному ядру или же в процессе исполнения программы может исполняться на другом ядре?
Я предполагаю, что при создании потока он привязывается к какому-то ядру, так как все объекты(не volatile), созданные этим потоком появляются в L1 кэше процессора. Как я понял, ядра имеют доступ только к своему L1 кэшу, а если поток будет исполняться на другом ядре, то он не увидит свои объекты, которые находятся в кэше другого ядра
Я правильно мыслю?
  • Вопрос задан
  • 1461 просмотр
Подписаться 3 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Java-разработчик с нуля
    12 месяцев
    Далее
  • Академия Эдюсон
    Java-разработчик: тариф Базовый
    8 месяцев
    Далее
  • Skillbox
    Профессия Java-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 2
@pfg21
ex-турист
ни джава ни твоя программа никак не распределяет потоки процессов.
это отдельная служба ядра ОС - Диспетчер операционной системы.
как реализовано выбор проца для исполнения смотри в тех.документации на ОС.
обычно потоки не привязаны к процессорам, что есть свободное туда и пихают.
Ответ написан
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Как я понял, ядра имеют доступ только к своему L1 кэшу, а если поток будет исполняться на другом ядре, то он не увидит свои объекты, которые находятся в кэше другого ядра
Я правильно мыслю?

Нет. Все системы поддерживающие SMP имеют когерентный кеш. Т.е. если ядро обращается к данным, находящимся в L1 кеше другого ядра, то данные перемещаются в кеш запрашивающего ядра. См.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@rPman
Ключевые слова - google: java cpu affinity

В разных операционных системах свои инструменты. Точно знаю есть врапперы на java чтобы этим управлять.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Казань
от 75 000 ₽
СофтМоушен Санкт-Петербург
от 150 000 до 220 000 ₽
Яндекс Москва
от 180 000 до 350 000 ₽