В настоящее время я работаю над проектом, в котором мне нужно эффективно обрабатывать блокировку сетевых операций ввода-вывода, не задействуя при этом важные системные ресурсы. Я использую Project Reactor и, в частности, планировщик Schedulers.boundedElastic(). Я понимаю, что начиная с версии 3.6.0,boundedElastic() предлагает две разные реализации в зависимости от настройки:
- на основе ExecutorService (PlatformThread)
- На основе потока на задачу (VirtualThread)
Учитывая эти параметры, я не понимаю, когда выбирать ExecutorService -реализация (Platform Thread) по сравнению с реализацией на основе VirtualThread. Учитывая, что VirtualThreads легкие и потребляют меньше ресурсов, они, похоже, обеспечивают лучшую масштабируемость, и поэтому мне интересно, должен ли это быть выбором по умолчанию, начиная с Java 21.
Может ли кто-нибудь прояснить сценарии или соображения? для выбора одной реализации над другой? В каких сценариях одна реализация будет предпочтительнее другой? Целесообразно ли по умолчанию использовать VirtualThreads в среде Java 21+?
Подробнее здесь:
https://stackoverflow.com/questions/786 ... ic-in-reac