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 + -
显示快捷键?