Fixed a race condition in FastQueue
This commit is contained in:
parent
5170838e79
commit
6611563c8c
|
@ -57,9 +57,13 @@ public class FastQueue<E> {
|
|||
|
||||
@SuppressWarnings("unchecked")
|
||||
public E poll() {
|
||||
for (;;) {
|
||||
if (drainedElements == null) {
|
||||
synchronized (this) {
|
||||
drainedElements = elements;
|
||||
if (elements == null) {
|
||||
break;
|
||||
}
|
||||
drainedElementCount = size;
|
||||
elements = null;
|
||||
size = 0;
|
||||
|
@ -72,6 +76,7 @@ public class FastQueue<E> {
|
|||
}
|
||||
|
||||
drainedElements = null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user