Безопасно ли запускать блокирующий вызов в исполнителе ОС при использовании виртуального потока?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

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