リスト7-11
def run[A](es: ExecutorService)(p: Par[A]): A = {
val ref = new java.util.concurrent.atomic.AtomicReference[A]
val latch = new CountDownLatch(1)
p(es) { a => ref.set(a); latch.countDown }
latch.await
ref.get
}
p(es) { a => ref.set(a); latch.countDown } の意味がすぐにはわからなかった。
trait Future[+A] {
private[parallelism] def apply(k: A => Unit): Unit
}
type Par[+A] = ExecutorService => Future[A]
を参照すると
pがPar[A]で es=>Futre[A]なので p(es)はFuture[A]を表す。
Future[A]のapplyはA=>Unitを引数としているので、 { a => ref.set(a); latch.countDown } を適用しているようだ。
0 件のコメント:
コメントを投稿