class
ConcurrentRingBuffer[T] extends AnyRef
Instance Constructors
-
new
ConcurrentRingBuffer(size: Int)(implicit arg0: ClassManifest[T])
Value Members
-
final
def
!=(arg0: AnyRef): Boolean
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: AnyRef): Boolean
-
final
def
==(arg0: Any): Boolean
-
final
def
asInstanceOf[T0]: T0
-
def
clone(): AnyRef
-
final
def
eq(arg0: AnyRef): Boolean
-
def
equals(arg0: Any): Boolean
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
final
def
isInstanceOf[T0]: Boolean
-
final
def
ne(arg0: AnyRef): Boolean
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
toString(): String
-
final
def
tryGet(): Option[T]
-
final
def
tryPut(el: T): Boolean
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
Inherited from AnyRef
Inherited from Any
A simple, lock-free, non-blocking ring buffer.
This differs from com.twitter.util.RingBuffer in that it is simpler (fewer features), and is fully concurrent (and hence also threadsafe). This should probably be moved into util at some point.
Note: For very high-rate usages, sizing buffers by powers of two may be advantageous.
Caveats: References are kept to old entries until they are overwritten again. You can get around this by storing nullable references (though this would require another allocation for each item).