Безопасно ли запускать блокирующий вызов в исполнителе ОС при использовании виртуального потока?JAVA

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

Сообщение Anonymous »

Я из Scala/ZIO, занимаюсь исследованием использования виртуальных потоков JDK21.
Классическая лучшая мировая практика aync в Scala — это оболочка блокирующих исполнителей с выделенным пулом исполнителей для блокирующих операций. .
Как насчет использования этого способа обработки виртуального потока, когда мы взаимодействуем с существующей библиотекой поддержки неправильных виртуальных потоков?
Например, testWaitOsExecutor метод из вызова виртуального потока.

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

private val osExecutor = Executors.newWorkStealingPool()
def testWaitOsExecutor(prams: String) = {
var rst = ""
val rstFuture = osExecutor.submit(
new Runnable {
override def run(): Unit = {
logger.info(
"threadName on OS thread: " + Thread.currentThread().getName
)
osExecutorCalc()
rst = "rst from os executor thread"
}
},
rst
)

rstFuture.get()
}

private def osExecutorCalc(): Int = {
val a = 1
Thread.sleep(15000) // perhaps synchronized code here we don't know
a
}
Я не вижу соответствующего дизайна/принципов использования этого шаблона. Хотите знать, как позаботиться здесь. Спасибо


Подробнее здесь: https://stackoverflow.com/questions/786 ... ual-thread
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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