final class OneElementConcurrentQueue[A] extends MutableConcurrentQueue[A] with Serializable
This is a specialized implementation of MutableConcurrentQueue of capacity 1. Since capacity 1 queues are by default used under the hood in Streams as intermediate resource they should be very cheap to create and throw away. Hence this queue is optimized (unlike RingBuffer*) for a very small footprint, while still being plenty fast.
Allocating an object takes only 24 bytes + 8+ bytes in long adder (so 32+ bytes total), which is 15x less than the smallest RingBuffer.
zio.internal.impls.OneElementConcurrentQueue object internals: OFFSET SIZE TYPE DESCRIPTION 0 4 (object header) 4 4 (object header) 8 4 (object header) 12 4 int OneElementConcurrentQueue.capacity 16 4 java.util.concurrent.atomic.AtomicReference OneElementConcurrentQueue.ref 20 4 java.util.concurrent.atomic.LongAdder OneElementConcurrentQueue.deqAdder Instance size: 24 bytes Space losses: 0 bytes internal + 0 bytes external = 0 bytes total
- Alphabetic
- By Inheritance
- OneElementConcurrentQueue
- Serializable
- MutableConcurrentQueue
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new OneElementConcurrentQueue()
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
-
final
val
capacity: Int(1)
The maximum number of elements that a queue can hold.
The maximum number of elements that a queue can hold.
- Definition Classes
- OneElementConcurrentQueue → MutableConcurrentQueue
- Note
that unbounded queues can still implement this interface with
capacity = MAX_INT
.
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
def
dequeuedCount(): Long
- returns
the number of elements that have ever been taken from the queue.
- Definition Classes
- OneElementConcurrentQueue → MutableConcurrentQueue
- Note
if you know how much time the queue is alive, you can calculate the rate at which elements are being dequeued.
-
def
enqueuedCount(): Long
- returns
the number of elements that have ever been added to the queue.
- Definition Classes
- OneElementConcurrentQueue → MutableConcurrentQueue
- Note
that scala.Long is used here, since scala.Int 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.
-
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()
-
def
isEmpty(): Boolean
- Definition Classes
- OneElementConcurrentQueue → MutableConcurrentQueue
-
def
isFull(): Boolean
- Definition Classes
- OneElementConcurrentQueue → MutableConcurrentQueue
-
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
offer(a: A): Boolean
A non-blocking enqueue.
A non-blocking enqueue.
- returns
whether the enqueue was successful or not.
- Definition Classes
- OneElementConcurrentQueue → MutableConcurrentQueue
-
def
poll(default: A): A
A non-blocking dequeue.
A non-blocking dequeue.
- returns
either an element from the queue, or the
default
param.
- Definition Classes
- OneElementConcurrentQueue → MutableConcurrentQueue
- 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 using scala.Option here.
-
def
size(): Int
- returns
the current number of elements inside the queue.
- Definition Classes
- OneElementConcurrentQueue → MutableConcurrentQueue
- Note
that this method can be non-atomic and return the approximate number in a concurrent setting.
-
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()