⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prodcons.scala

📁 JAVA 语言的函数式编程扩展
💻 SCALA
字号:
/* The Computer Language Shootout    http://shootout.alioth.debian.org/   contributed by Isaac Gouy (Scala novice)*/import concurrent.SyncVar;import concurrent.ops._;object prodcons {   def main(args: Array[String]) = {      val n = toPositiveInt(args);      val buffer = new SharedBuffer();      var p = 0;      var c = 0;      val cDone = new SyncVar[Boolean];      spawn {          while(p<n) { p=p+1; buffer put(p); }      }      spawn {          var v: Int = _;         while(c<n) { c=c+1; v = buffer.get; }         cDone set true;      }      cDone.get;      Console println(p + " " + c);    }   private def toPositiveInt(s: Array[String]) = {      val i =          try { Integer.parseInt(s(0)); }          catch { case _ => 1 }      if (i>0) i; else 1;   }}private class SharedBuffer() {   var contents: Int = _;   var available = false;   def get = synchronized {      while (available == false) wait();      available = false;         // Console println("\t" + "get " + contents);      notifyAll();      contents   }   def put(value: Int) = synchronized {      while (available == true) wait();      contents = value;      available = true;         // Console println("put " + value);      notifyAll();   }}

⌨️ 快捷键说明

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