Каков Алгоритм планирования JVM?

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

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

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

Я ценил бы любую справку!

Спасибо!

13
задан mrcaramori 12 May 2010 в 03:50
поделиться

3 ответа

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

19
ответ дан 1 December 2019 в 21:37
поделиться

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

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

2
ответ дан 1 December 2019 в 21:37
поделиться

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

4
ответ дан 1 December 2019 в 21:37
поделиться