Неверная assuption является
Если только один процессор существует, то все потоки будут работать один за другим.
Как выполняется выполнение потоков до среды выполнения. В java есть некоторые определения того, что определенные части вашего кода не будут вызывать синхронизацию с другими потоками и, следовательно, не вызовут (потенциального) перенастройки потоков.
В общем, ОС будет отвечать за планирование единиц исполнения. В былые времена в основном такие объекты были процессами. Теперь могут быть процессы и потоки (некоторые планируют только на уровне потока). Для простоты пусть ssume OS имеет дело только с потоками.
OS затем может разрешить поток запускать до тех пор, пока он не достигнет точки, в которой он не сможет продолжить, например. ожидая операции ввода-вывода для cpmplete. Это хорошо для потока, так как он может использовать CPU для макс. Это плохо для всех других потоков, которые хотят получить некоторые циклы процессора самостоятельно. (В общем, всегда будет больше потоков, чем доступные CPU. Так что проблема не зависит от количества процессоров.) Чтобы улучшить интерактивное поведение, ОС может использовать срезы времени, которые позволяют потоку запускаться в течение определенного времени. По истечении времени среза поток принудительно удаляется из CPU, и ОС выбирает новый поток для запуска (может даже быть только что прерван).
Это позволит каждому потоку добиться определенного прогресса (добавив некоторые накладные расходы для планирования). Таким образом, даже на одной процессорной системе, потоки моего (кажутся) запускаются параллельно.
Итак, для ОС совсем не важно, является ли набор потоков результатом одного пользователя (или даже одного вызова в веб-приложении) или был создан рядом пользователей и веб-вызовов.
какое приложение? – ArchLicher
веб-приложение, написанное на Java, развернутое на сервере tomcat – user2296988