作为scala和scalaz的新手,当使用promise时,遇到了问题.我的代码是这样的.
import scalaz._
import Scalaz._
object Main2 extends Application {
def sleeper() = {
Thread.sleep(2000)
}
val message = promise {
println("begin")
sleeper
println("ok")
"ok"
}
Thread.sleep(5000)
println("try to get")
println(message())
}
Run Code Online (Sandbox Code Playgroud)
此输出如下,看起来很奇怪.似乎没有调用sleeper方法,并且线程被阻塞. -
begin
try to get
Run Code Online (Sandbox Code Playgroud)
但是,如果我更换睡眠者呼叫内联睡眠,它看起来很好 -
object Main2 extends Application {
def sleeper() = {
Thread.sleep(2000)
}
val message = promise {
println("begin")
Thread.sleep(2000)
println("ok")
"ok"
}
Thread.sleep(5000)
println("try to get")
println(message())
}
Run Code Online (Sandbox Code Playgroud)
输出在这里 -
begin
ok
try to get
ok
Run Code Online (Sandbox Code Playgroud)
我不明白为什么,请问大师请指教?
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |