Избегание закрепления виртуального потока путем перемещения кода для выполнения в потоке платформы.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Избегание закрепления виртуального потока путем перемещения кода для выполнения в потоке платформы.

Сообщение Anonymous »

Я переношу свое приложение Spring Boot на виртуальные потоки с платформенных.
В целом все работает нормально, закрепления не происходит. Но для некоторого запроса может произойти операция, которая приведет к закреплению (из-за операции блокировки внутри синхронизированного блока), и я хочу этого избежать. Если я этого не сделаю, я не могу оказаться в ситуации, когда все операторы связи закреплены и не осталось потока платформы для обслуживания запроса.
Операция, которая приводит к закреплению, является частью 3-го- партийная библиотека. В ожидании исправления, которое позволит выполнять код библиотеки без закрепления, я планирую использовать следующий подход:
Отправьте код, закрепляющий носитель виртуального потока, службе исполнителя и немедленно вызовите .get() (из виртуального потока) в CompletableFuture, который я получу от исполнителя.
Итак, следующий код:

Код: Выделить всё

// Some other operations on a virtual thread

return obj.thisLeadsToPinning();
Будет переписано как:

Код: Выделить всё

// Some other operations on a virtual thread
return service.submit(() -> obj.thisLeadsToPinning()).get();
Насколько я понимаю, операция теперь может ждать входа в синхронизированный блок в потоке пула исполнителя, но поскольку метод .get() вызывается из виртуального потока , их оператор будет свободен после завершения операции. Теперь кажется, что я ограничиваю свой параллелизм размером пула потоков, который использует исполнитель, но только для (редких) запросов, требующих выполнения операции.
Для меня это так. кажется, это неплохо повлияет на производительность приложения. Верны ли мои предположения или я что-то упускаю?

Подробнее здесь: https://stackoverflow.com/questions/787 ... orm-thread
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»