Updates the overflowable queue to reduce thread contention on the queue size monitor

This commit is contained in:
Denny
2017-01-29 06:26:12 -05:00
parent 0c84984fcc
commit e6ab615931

View File

@@ -55,15 +55,14 @@ public class OverflowableTransferQueue<E>
{
if(!mOverflow)
{
if(mCounter.get() > mMaximumSize)
mQueue.offer(e);
int size = mCounter.incrementAndGet();
if(size > mMaximumSize)
{
setOverflow(true);
}
else
{
mQueue.offer(e);
mCounter.incrementAndGet();
}
}
}
@@ -76,7 +75,12 @@ public class OverflowableTransferQueue<E>
if(drainCount > 0)
{
mCounter.addAndGet(-drainCount);
int size = mCounter.addAndGet(-drainCount);
if(mOverflow && size <= mResetThreshold)
{
setOverflow(false);
}
}
return drainCount;