syncvar.scala
来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 63 行
SCALA
63 行
/* __ *\** ________ ___ / / ___ Scala API **** / __/ __// _ | / / / _ | (c) 2003-2007, LAMP/EPFL **** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **** /____/\___/_/ |_/____/_/ | | **** |/ **\* */// $Id: SyncVar.scala 12271 2007-07-11 14:52:34Z michelou $package scala.concurrent/** The class <code>SyncVar</code> ... * * @author Martin Odersky, Stepan Koltsov * @version 1.0, 10/03/2003 */class SyncVar[A] { private var isDefined: Boolean = false private var value: A = _ private var exception: Option[Throwable] = None def get = synchronized { while (!isDefined) wait() if (exception.isEmpty) value else throw exception.get } def set(x: A) = synchronized { value = x isDefined = true exception = None notifyAll() } private def setException(e: Throwable) = synchronized { exception = Some(e) isDefined = true notifyAll() } def setWithCatch(x: => A) = synchronized { try { this set x } catch { case e => this setException e throw e } } def isSet: Boolean = synchronized { isDefined } def unset = synchronized { isDefined = false }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?