Выполнение ввода-вывода в фоновом режиме в кошках-скалах - PullRequest
0 голосов
/ 24 января 2019
def backGroundTask:IO[Unit]={
IO
{
//Time consuming task
}
}

Как выполнить эту задачу с нетерпением в фоновом потоке?

1 Ответ

0 голосов
/ 24 января 2019

Вы можете использовать ContextShift.evalOn :

def backGroundTask = IO {
      Thread.currentThread()
}

val contextShift: ContextShift[IO] = IO.contextShift(ExecutionContext.global)

val ec = ExecutionContext.fromExecutor(Executors.newCachedThreadPool()) //create other execution context

println(backGroundTask.unsafeRunSync()) // will print Thread[main,5,main]
println(contextShift.evalOn(ec)(backGroundTask).unsafeRunSync()) //will print Thread[pool-1-thread-1,5,main]
...