Подтвердить что ты не робот

Что такое алгоритм JVM Scheduling?

Мне действительно интересно, как JVM работает с потоками! В моих поисках в Интернете я нашел материал о RTSJ, но я не знаю, правильно ли это для моих ответов. Я также нашел эту тему в форумах солнца, http://forums.sun.com/thread.jspa?forumID=513&threadID=472453, но это не удовлетворительно.

Может ли кто-нибудь дать мне некоторые указания, материалы, статьи или предложения о алгоритме планирования JVM?

Я также ищу информацию о настройках по умолчанию в потоках Java в планировщике, например, "сколько времени потребуется для каждого потока" в случае сокращения времени. И этот материал.

Буду признателен за любую помощь!

Спасибо!

4b9b3361

Ответ 1

Нет единой виртуальной машины Java; JVM - это спецификация, и есть несколько ее реализаций, в том числе версия OpenJDK и ее версия Sun, среди прочих. Я не знаю наверняка, но я бы предположил, что любая разумная JVM будет просто использовать базовый механизм потоковой передачи, предоставляемый ОС, что подразумевает POSIX Threads (pthreads) в UNIX (Mac OS X, Linux и т.д.) И будет подразумевают потоки WIN32 в Windows. Как правило, эти системы используют по умолчанию циклическую стратегию.

Ответ 2

Это не так. JVM использует собственные потоки операционной системы, поэтому ОС выполняет планирование, а не JVM.

Ответ 3

Некоторое время назад я писал несколько статей о планирование потоков с точки зрения Java. Тем не менее, на основных платформах поведение потоков существенно зависит от поточной работы ОС.

Посмотрите, в частности, на мою страницу о том, что Приоритет потока Java, в котором объясняется, как уровни приоритета Java сопоставляются с приоритетами поточной политики ОС, и как на практике это приводит к тому, что потоки разных приоритетов ведут себя в Linux и Windows. Основное различие обсуждалось в том, что в Linux существует больше отношения между приоритетом потока и долей CPU, выделенной для потока, тогда как под Windows это не так (см. Графики).

Ответ 4

У меня нет комментариев, поэтому запись здесь... JVM вызывает pthreads (обычно используемый механизм нарезки резьбы, другие варианты есть) для каждого соответствующего запроса. Но планирование здесь полностью выполняется ОС, действующей как хозяин. Но это предпочтительный подход, и можно планировать эти потоки с помощью JVM. Например, в Jikes RVM есть варианты переопределения этого подхода решения ОС. Например, в нем потоки называются RVMThread, и их можно планировать/манипулировать с использованием классов пакетов org.jikesrvm.schedular. Для более ссылка