В целом все работает нормально, закрепления не происходит. Но для некоторого запроса может произойти операция, которая приведет к закреплению (из-за операции блокировки внутри синхронизированного блока), и я хочу этого избежать. Если я этого не сделаю, я не могу оказаться в ситуации, когда все операторы связи закреплены и не осталось потока платформы для обслуживания запроса.
Операция, которая приводит к закреплению, является частью 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();
Для меня это так. кажется, это неплохо повлияет на производительность приложения. Верны ли мои предположения или я что-то упускаю?
Подробнее здесь: https://stackoverflow.com/questions/787 ... orm-thread
Мобильная версия