oneplacebuffer.scala

来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 61 行

SCALA
61
字号
package examplesobject oneplacebuffer {  import scala.concurrent.{MailBox, ops}  class OnePlaceBuffer {    private val m = new MailBox() {}          // An internal mailbox    private case class Empty()                // Types of messages we deal with    private case class Full(x: Int)    m send Empty()                            // Initialization    def write(x: Int) {      m receive {        case Empty() =>          println("put " + x)          m send Full(x)      }    }    def read: Int = m receive {      case Full(x) =>        println("get " + x)        m send Empty(); x    }  }  def kill(delay: Int) = new java.util.Timer().schedule(    new java.util.TimerTask {      override def run() = {        println("[killed]")        exit(0)      }    },    delay) // in milliseconds  def main(args: Array[String]) {    val buf = new OnePlaceBuffer    val random = new java.util.Random()    def producer(n: Int) {      Thread.sleep(random.nextInt(1000))      buf.write(n)      producer(n + 1)    }    def consumer {      Thread.sleep(random.nextInt(1000))      val n = buf.read      consumer    }    ops.spawn(producer(0))    ops.spawn(consumer)    kill(10000)  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?