|
Scala example source code file (BooleanLatch.scala)
The BooleanLatch.scala Scala example source codepackage scalaz.concurrent import java.util.concurrent._ import locks._ trait BooleanLatch { def release(): Boolean def await(): Unit } object BooleanLatch { def apply() = new BooleanLatch { val sync = new AbstractQueuedSynchronizer { val RELEASED = 0 val UNAVAILABLE = -1 setState(UNAVAILABLE) def released = getState == RELEASED def unavailable = getState == UNAVAILABLE override def tryAcquire(ignore: Int) = if (!released) false else compareAndSetState(RELEASED, UNAVAILABLE) override def tryRelease(ignore: Int) = { if (unavailable) setState(RELEASED) true } } override def release() = sync release 0 override def await() = sync acquireInterruptibly 0 } } Other Scala examples (source code examples)Here is a short list of links related to this Scala BooleanLatch.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.