abstract class MutableConcurrentQueue[A] extends AnyRef
A MutableConcurrentQueue interface to use under the hood in ZIO.
The implementation at minimum:
- Should be non-blocking and ideally lock-free.
- Should provide basic metrics such as how many elements were enqueued/dequeued.
- Attributes
- protected[zio]
- Note
this is declared as
abstract class
sinceinvokevirtual
is slightly cheaper thaninvokeinterface
.
- Alphabetic
- By Inheritance
- MutableConcurrentQueue
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new MutableConcurrentQueue()
Abstract Value Members
-
abstract
val
capacity: Int
The maximum number of elements that a queue can hold.
The maximum number of elements that a queue can hold.
- Note
that unbounded queues can still implement this interface with
capacity = MAX_INT
.
-
abstract
def
dequeuedCount(): Long
- returns
the number of elements that have ever been taken from the queue.
- Note
if you know how much time the queue is alive, you can calculate the rate at which elements are being dequeued.
-
abstract
def
enqueuedCount(): Long
- returns
the number of elements that have ever been added to the queue.
- Note
that
,Long
is used here, sinceInt
will be overflowed really quickly for busy queues.if you know how much time the queue is alive, you can calculate the rate at which elements are being enqueued.
- abstract def isEmpty(): Boolean
- abstract def isFull(): Boolean
-
abstract
def
offer(a: A): Boolean
A non-blocking enqueue.
A non-blocking enqueue.
- returns
whether the enqueue was successful or not.
-
abstract
def
poll(default: A): A
A non-blocking dequeue.
A non-blocking dequeue.
- returns
either an element from the queue, or the
default
param.
- Note
that if there's no meaningful default for your type, you can always use
poll(null)
. Not the best, but reasonable price to pay for lower heap churn from not usingOption
here.
-
abstract
def
size(): Int
- returns
the current number of elements inside the queue.
- Note
that this method can be non-atomic and return the approximate number in a concurrent setting.
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
offerAll(as: Iterable[A]): Chunk[A]
A non-blocking enqueue of multiple elements.
-
def
pollUpTo(n: Int): Chunk[A]
A non-blocking dequeue of multiple elements.
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()