Pull to refresh

Comments 4

Я правильно понимаю, что RestClient - это если пишешь на виртуальных потоках, и не хочешь все переписывать в асинхронном стиле, и под капотом он с ними нормально работает, а не создает thread pinning и прочие прелести? А как он ограничивается в таком случае - открывает соединения для каждого запроса со своим виртуальным потоком?

Под капотом у RestClient используются сторонние http библиотеки типа java.net.http.HttpClient, apache http components и другие. RestClient просто обёртка. Соответственно, надо задавать вопрос нижележащей библиотеке. Могу сказать, что стандартный java.net.http.HttpClient полностью поддерживает виртуальные треды.

А как он ограничивается в таком случае - открывает соединения для каждого запроса со своим виртуальным потоком?

Сколько лично Вы запустите одновременных запросов - столько соединений и будет. Этот момент зависит только от вас, а не от фреймворка. От виртуальности зависит только количество нативных потоков, привлекаемых для обработки ваших запросов.

Я как раз недавно писал статью о виртуальных тредах. Тулзы от java.net или jdk действительно это поддерживают, а вот апач поддерживает "для галочки". Т.е. внутри он содержит дополнительные ограничения, которые ставят резкий блок для использования виртуальных потоков.

Прочитал статью.

Иными словами, переписывать ничего не стали, просто заменили секции synchronized (что стало бессмысленным с появлением Java 24) на примитивы, и на том и успокоились.

А что они могли ещё сделать, помимо этого? Ещё и с учётом того, что JEP 491 сделал такую доработку бессмысленной. Для поддержки виртуальных тредов в принципе ничего особенного делать не нужно.

Все примеры крутятся на основе PoolingHttpClientConnectionManager. Само название как бы намекает на пул соединений. Это резко противоречит идеям JEP 425, секции под говорящим названием Do not pool virtual threads

Вы путаете две кардинально различающиеся концепции - пул потоков и пул соединений. Это не одно и то же. Пул соединений - это просто контейнер для TCP сокетов. Он жизненно необходим для корректной поддержки HTTP фичи keep-alive и с потоками никак не связан.

Между прочим, java.net.http.HttpClient тоже содержит пул коннектов. Но при этом вашего праведного гнева он почему-то не вызывает.

Sign up to leave a comment.

Information

Website
t.me
Registered
Employees
11–30 employees