내가 배운 점은 scalaz.stream.time.awakeEvery(1.second)
1 초마다 이벤트를 만드는 프로세스를 만들 수 있습니다. 아주 명백하다. 그런 다음 매 초마다 일부 작업을 수행하기 위해 해당 프로세스를 매핑 할 수 있습니다. 여태까지는 그런대로 잘됐다.ScalaZ Process를 중단하는 방법 time.awakeEvery?
이 활동을 중단하려면 어떻게해야합니까? 나는 p.kill.run.run
을 시도했는데, p
은 time.awakeEvery(1.second)
으로 생성 된 프로세스이지만 작동하지 않습니다.
그래서 코드는 다음과 같습니다
implicit val sc = new java.util.concurrent.ScheduledThreadPoolExecutor(1)
val p = time.awakeEvery(1.second)
p.map(println(_)).run.runAsync {
// just some printlines
}
Thread.sleep(4000)
println("Killing")
p.kill.run.run
println("Killed")
을 아직도, 그것은이 "사망"인쇄 후 시간을 인쇄하고 계속적으로 영원히 간다.
어떻게 프로세스를 중지하고 프로세스에서 사용하는 리소스 (스레드)를 확보 할 수 있습니까? 내가 ScheduledThreadPoolExecutor를 종료하여 멈출 수 있다는 것을 알았지 만 좀 더 우아한 방법이 아닌가?