Как планировщик потоков JVM управляет потоками для многопроцессоров?JAVA

Программисты JAVA общаются здесь
Ответить
Гость
 Как планировщик потоков JVM управляет потоками для многопроцессоров?

Сообщение Гость »


Я читал Head First о многопоточности. Что я знаю о многопоточности:

Когда мы вызываем start() с объектом класса Thread, этот поток переходит в состояние Runnable. Таким образом, все потоки переходят в состояние Runnable после вызова start() объектом этих потоков. Это Планировщик потоков JVM, который случайным образом выбирает поток из состояния Выполняемый, чтобы перевести его в состояние Выполняется. После перехода в состояние Выполняется определенный стек вызовов для этого конкретного потока начинает выполняться.

Опять же, планировщик потоков JVM может остановить выполнение потока, переведя этот поток из состояния «Выполняется» в состояние «Выполняемый». На этот раз выполнение кода приостанавливается в стеке вызовов этого потока.

Теперь мой вопрос: для многопроцессорной машины, как поток JVM планировщик выбирает поток из состояния Runnable? Он выбирает только один поток и передать его процессору? Или он выбирает более одного поток и перевести эти потоки в состояние «Работа» с разными процессоры?

Я написал код ниже:

// Класс основного потока общественный класс ThreadMain { public static void main(String[] args) { Runnable threadJob = новый MyRunnable (); Поток t = новый поток (threadJob); т.старт(); System.out.println("Снова в главном"); } } // Класс другого потока публичный класс MyRunnable реализует Runnable{ публичный недействительный запуск() { System.out.println("Я нить"); } } Здесь есть две темы. Основная тема и тема, которую я создал. Если моя машина имеет многопроцессор, как она будет себя вести? Будет ли планировщик потоков JVM выбирать два потока одновременно и передавать их двум процессорам?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»