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())
}
この出力は次のとおりですが、奇妙に見えます。sleeperメソッドが呼び出されておらず、スレッドがブロックされているようです。-
begin
try to get
しかし、インラインスリープを呼び出すスリーパーを置き換えると、問題ないように見えます-
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())
}
ここに出力-
begin
ok
try to get
ok
理由がわかりませんが、教祖にアドバイスしてもらえますか?