Планирование потоков обычно относится к процессу, с помощью которого система назначает права использования процессора потокам.Этот процесс будет генерировать переключение контекста, то есть ЦП операционной системы выделяет определенное время выполнения каждой задаче посредством чередования временных интервалов, и затем преобразует текущий статус задачи.Сохраните его, затем загрузите состояние следующей задачи и выполните ее, это процесс сохранения и загрузки состояния.
Как правило, существует два типа режимов планирования потоков — упреждающее планирование и совместное планирование.
Упреждающее планирование означает, что время выполнения каждого потока и переключение потоков контролируется системой, а переключение потоков не определяется самим потоком.Системное управление означает, что при определенном механизме работы системы каждый поток может быть разделены на одинаковый квант времени выполнения, также может быть то, что некоторые потоки выполняют квант времени в течение длительного времени, или даже некоторые потоки не могут получить квант времени выполнения. В соответствии с этим механизмом блокировка одного потока не приведет к блокировке всего процесса.
Сотрудное планирование относится к потоке после реализации проактивной системы уведомления, чтобы перейти на другую нить выполнения, время выполнения нити по резьбу самого управления, эта модель похожа на релейную гонку, что и человек, заканчивая их путешествие Следующий человек, следующий человек, чтобы продолжать бежать. Время выполнения для резьбы самостоятельно, переключение потока предсказуемая проблема с несколькими нитьми, проблема синхронизации не существует, но она имеет фатальную слабость: если есть проблема, написанная резьба, на которой можно было заблокировано, это может вызвать всю систему сбой.
Левая сторона - упреждающее планирование потоков.Если необходимо запустить три потока, путь для запуска процессора состоит в том, чтобы принудительно переключиться на второй поток для запуска временного интервала после того, как первый поток запустится для временного интервала, а затем переключиться на третий поток. , а затем вернуться к первому потоку, поэтому выполняйте цикл до тех пор, пока не будут выполнены все три потока. Кооперативное планирование потоков этого не делает: сначала выполняется первый поток, затем поток многократно уведомляет второй поток о выполнении, а второй поток уведомляет третий поток до тех пор, пока третий поток не будет выполнен.
Какой режим планирования потоков использует Java? Эта проблема связана с реализацией JVM.Спецификация JVM предусматривает, что каждый поток имеет приоритет, и чем выше приоритет, тем лучше выполнение.Однако более высокий приоритет не означает, что он может занимать квант времени выполнения в одиночку.Подробнее кванты времени выполнения, наоборот, более низкому приоритету будет выделено меньше времени выполнения, но не будет выделено меньше времени выполнения. Спецификация JVM строго не определяет политику планирования.Как правило, планирование потоков, используемое Java, является упреждающим планированием, которое отражено в JVM, чтобы позволить потоку с высоким приоритетом в исполняемом пуле иметь право использовать ЦП. , Если приоритет потока в исполняемом пуле равен Таким же образом, поток выбирается случайным образом, но следует отметить, что на самом деле существует только один поток, работающий в абсолютный момент времени (здесь относительно ЦП), до тех пор, пока этот поток переходит в состояние non-runnable или в другое состояние с более высоким приоритетом.Только когда поток входит в пул исполняемых потоков, он отказывается от права использовать ЦП.
------------- Рекомендуем прочитать ------------
Резюме моей статьи за 2017 год — машинное обучение
Краткое изложение моих статей за 2017 год — Java и промежуточное ПО
Резюме моих статей 2017 года — глубокое обучение
Краткое изложение моих статей за 2017 год — исходный код JDK
Резюме моей статьи за 2017 год — обработка естественного языка
Резюме моих статей 2017 года — Java Concurrency
Поговори со мной, задай мне вопросы:
Меню официальной учетной записи было разделено на «Сводка для чтения», «Распределенное», «Машинное обучение», «Глубокое обучение», «НЛП», «Глубина Java», «Ядро параллелизма Java», «Исходный код JDK», "Tomcat Core" "Подождите, может быть, есть тот, который соответствует вашему аппетиту.
Зачем писать «Анализ проектирования ядра Tomcat»
Добро пожаловать, чтобы следовать: